摘要:當注冊成功以后,我們應該立即返回確認用戶登錄的值,并且作為的變量給儲存起來,直到退出時刪除,或者超出時間后刪除。在文檔里也有提及,對,就是那個叫的東東。用戶信息也被正常寫入,之后就可以歡快的擴展注冊機制啦。
前言
根據上一篇文章,我們已經吧dingo/api給安裝并且調試好了,那么下一步,就是來完善咱們的API了。
最首要的步驟一定是要先把注冊的功能給完善了,好了,那就給第一條正式API起個名字吧——
http://localhost/register
首先先對這條API進行分析。這是一個用戶注冊的API,新用戶通過訪問它來注冊賬號,之后才能有權限進行其他的操作,享受其它的APP服務。那么我們在訪問的時候,就應當把正確的信息輸入進去,因為客戶端是APP,所以要輸入的字段應該是這些——(手機號)phone、(密碼)password。
那么在一切準備就緒以后,當服務器處理完操作以后,我們又該獲得什么callback呢?
接下來就是我自己作為一個新手小白的個人理解了。當注冊成功以后,我們應該立即返回確認用戶登錄的token值,并且作為APP的config變量給儲存起來,直到退出時刪除,或者超出時間后刪除。
在開始之前呢,我們要在項目里安裝JWT(JSON WEB TOKEN),這是一種API的驗證方式,詳細的部分可以去看文檔,它的主要作用就是在客戶端的用戶發出注冊和登錄的請求之后,返回一串token值,在之后成功登錄以后以這個token值作為憑證來驗證是否有獲取資源的權限。
如何安裝請看這個JWT
確定安裝好JWT以后,首先就來創建路由吧。
首先打開routes.php,修改路由
Route::post("/register", "AuthAuthenticateController@register");
然后創建一個控制器,在laravel項目下運行
php artisan make:controller Auth/AuthenticateController
接下來,
我們直接用純html頁面當做APP,去測試API,創建新的test文件夾,結構如下
test/ ├── css/ │ └── bootstrap.min.css ├── js/ │ ├── jquery.min.js │ └── bootstrap.min.js ├── fonts/ │ ├── glyphicons-halflings-regular.eot │ ├── glyphicons-halflings-regular.svg │ ├── glyphicons-halflings-regular.ttf │ ├── glyphicons-halflings-regular.woff │ └── glyphicons-halflings-regular.woff2 └── register.html
在register.html文件里添加內容
注冊 注冊
在AuthenticateController里添加如下函數
only("email", "password"); try { // attempt to verify the credentials and create a token for the user if (! $token = JWTAuth::attempt($credentials)) { return response()->json(["error" => "invalid_credentials"], 401); } } catch (JWTException $e) { // something went wrong whilst attempting to encode the token return response()->json(["error" => "could_not_create_token"], 500); } // all good so return the token return response()->json(compact("token")); } public function register(Request $request) { $newUser = [ "name" => $request->get("name"), "phone" => $request->get("phone"), "password" => bcrypt($request->get("password")), ]; $user = User::create($newUser); $token = JWTAuth::fromUser($user); return response()->json(compact("token")); } }
例子很簡單,就是儲存請求的數據然后返回token值。
這里就不得不來說說我遇到的一個大坑其實按照以上的代碼完全可以將新用戶寫入數據庫的。但是!
token值不能被返回!這就讓人很頭大了。于是我又看了看文章,發現以上的那些操作叫做跨域請求。在laravel文檔里也有提及,對,就是那個叫jsonp的東東。于是又看了些文章,把ajax方法修改成了這個樣子
$.ajax({ type: "get", url: "http://localhost/register", data: $(this).serialize(), async: false, dataType:"jsonp", jsonp: "callback" success: function(data){ alert(JSON.stringify(data)); }, complete: function(){ alert("ok"); }, error: function(XMLHttpRequest, textStatus, errorThrown) { alert(XMLHttpRequest.status); alert(XMLHttpRequest.readyState); alert(textStatus); } });
這下又可以寫進去了,但是呢!還是沒有token值的出現。。。
而且呢,請求方式也被換成了get,這是為什么呢?后來才知道這是因為jsonp和post根本不可能實現,或者說實現起來太難,所以我也就不為難自己了。我到那時就完全的跑偏了。。。又把ajax的方法改了回去,打開控制臺,再試一遍,才發現,原來想要實現跨域,要在請求的header中加入Access-Control-Allow-Origin屬性。
這下子感覺有希望了,于是立即創建一個http中間件吧。
php artisan make:middleware AccessMiddleware
在里面寫上
記得在kernel.php文件中注冊中間件喲,在$routeMiddleware里添加
"access" => AppHttpMiddlewareAccessMiddleware::class,接下來再來修改路由
Route::group(["middleware" => "access"], function () { Route::post("/register","AuthAuthenticateController@register"); });然后再來測試一下,輸入表單,點立即注冊,之后bingo,token值出來了。
用戶信息也被正常寫入,之后就可以歡快的擴展注冊機制啦。
最后
在這里先規劃一下吧。首先在控制器內添加表單驗證,然后返回不同的json數據給客戶端。但是畢竟我不是專業的,我只是愛好這個才去寫這些東西的,關于應該返回什么數據現在腦子里還是一片混亂。如果有大神偶然間看到了我的這篇文章,希望可以給我一點指導和建議,十分的感謝!上面的例子完全是我自己看文檔+原創給整出來的,如果有錯請及時告訴我喲~
上面的例子到最后雖然都實現了,但是我仍然覺得很 low,畢竟個人的智慧還是有限的。如果大家有對這個十分感興趣,可以聯系我,咱們可以一起邊學邊做,共同進步!我的郵箱:lwx12525@qq.com
如果恰巧大神路過,請務必給我一些指導,小白將萬分的感謝 O(∩_∩)O~~
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/35772.html
摘要:當注冊成功以后,我們應該立即返回確認用戶登錄的值,并且作為的變量給儲存起來,直到退出時刪除,或者超出時間后刪除。在文檔里也有提及,對,就是那個叫的東東。用戶信息也被正常寫入,之后就可以歡快的擴展注冊機制啦。 前言 根據上一篇文章,我們已經吧dingo/api給安裝并且調試好了,那么下一步,就是來完善咱們的API了。最首要的步驟一定是要先把注冊的功能給完善了,好了,那就給第一條正式API...
摘要:前期準備原文地址前言,為什么做以及要做個啥本人姓小名白,不折不扣編程屆小白一名,但是自從大一那會兒接觸到編程這件奇妙的事情,就完完全全的陷入的程序的世界??蚣?,是我最喜歡的框架了,沒有之一。 前期準備 原文地址前言,為什么做以及要做個啥本人姓小名白,不折不扣編程屆小白一名,但是自從大一那會兒接觸到編程這件奇妙的事情,就完完全全的陷入的程序的世界。這不,最近又開始折騰APP了,話說現在開...
摘要:前期準備原文地址前言,為什么做以及要做個啥本人姓小名白,不折不扣編程屆小白一名,但是自從大一那會兒接觸到編程這件奇妙的事情,就完完全全的陷入的程序的世界??蚣埽俏易钕矚g的框架了,沒有之一。 前期準備 原文地址前言,為什么做以及要做個啥本人姓小名白,不折不扣編程屆小白一名,但是自從大一那會兒接觸到編程這件奇妙的事情,就完完全全的陷入的程序的世界。這不,最近又開始折騰APP了,話說現在開...
閱讀 845·2019-08-30 15:54
閱讀 3316·2019-08-29 15:33
閱讀 2701·2019-08-29 13:48
閱讀 1213·2019-08-26 18:26
閱讀 3333·2019-08-26 13:55
閱讀 1476·2019-08-26 10:45
閱讀 1164·2019-08-26 10:19
閱讀 305·2019-08-26 10:16