摘要:當(dāng)注冊成功以后,我們應(yīng)該立即返回確認(rèn)用戶登錄的值,并且作為的變量給儲(chǔ)存起來,直到退出時(shí)刪除,或者超出時(shí)間后刪除。在文檔里也有提及,對,就是那個(gè)叫的東東。用戶信息也被正常寫入,之后就可以歡快的擴(kuò)展注冊機(jī)制啦。
前言
根據(jù)上一篇文章,我們已經(jīng)吧dingo/api給安裝并且調(diào)試好了,那么下一步,就是來完善咱們的API了。
最首要的步驟一定是要先把注冊的功能給完善了,好了,那就給第一條正式API起個(gè)名字吧——
http://localhost/register
首先先對這條API進(jìn)行分析。這是一個(gè)用戶注冊的API,新用戶通過訪問它來注冊賬號(hào),之后才能有權(quán)限進(jìn)行其他的操作,享受其它的APP服務(wù)。那么我們在訪問的時(shí)候,就應(yīng)當(dāng)把正確的信息輸入進(jìn)去,因?yàn)榭蛻舳耸茿PP,所以要輸入的字段應(yīng)該是這些——(手機(jī)號(hào))phone、(密碼)password。
那么在一切準(zhǔn)備就緒以后,當(dāng)服務(wù)器處理完操作以后,我們又該獲得什么callback呢?
接下來就是我自己作為一個(gè)新手小白的個(gè)人理解了。當(dāng)注冊成功以后,我們應(yīng)該立即返回確認(rèn)用戶登錄的token值,并且作為APP的config變量給儲(chǔ)存起來,直到退出時(shí)刪除,或者超出時(shí)間后刪除。
在開始之前呢,我們要在項(xiàng)目里安裝JWT(JSON WEB TOKEN),這是一種API的驗(yàn)證方式,詳細(xì)的部分可以去看文檔,它的主要作用就是在客戶端的用戶發(fā)出注冊和登錄的請求之后,返回一串token值,在之后成功登錄以后以這個(gè)token值作為憑證來驗(yàn)證是否有獲取資源的權(quán)限。
如何安裝請看這個(gè)JWT
確定安裝好JWT以后,首先就來創(chuàng)建路由吧。
首先打開routes.php,修改路由
Route::post("/register", "AuthAuthenticateController@register");
然后創(chuàng)建一個(gè)控制器,在laravel項(xiàng)目下運(yùn)行
php artisan make:controller Auth/AuthenticateController
接下來,
我們直接用純html頁面當(dāng)做APP,去測試API,創(chuàng)建新的test文件夾,結(jié)構(gòu)如下
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文件里添加內(nèi)容
注冊 注冊
在AuthenticateController里添加如下函數(shù)
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")); } }
例子很簡單,就是儲(chǔ)存請求的數(shù)據(jù)然后返回token值。
這里就不得不來說說我遇到的一個(gè)大坑其實(shí)按照以上的代碼完全可以將新用戶寫入數(shù)據(jù)庫的。但是!
token值不能被返回!這就讓人很頭大了。于是我又看了看文章,發(fā)現(xiàn)以上的那些操作叫做跨域請求。在laravel文檔里也有提及,對,就是那個(gè)叫jsonp的東東。于是又看了些文章,把a(bǔ)jax方法修改成了這個(gè)樣子
$.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); } });
這下又可以寫進(jìn)去了,但是呢!還是沒有token值的出現(xiàn)。。。
而且呢,請求方式也被換成了get,這是為什么呢?后來才知道這是因?yàn)?b>jsonp和post根本不可能實(shí)現(xiàn),或者說實(shí)現(xiàn)起來太難,所以我也就不為難自己了。我到那時(shí)就完全的跑偏了。。。又把ajax的方法改了回去,打開控制臺(tái),再試一遍,才發(fā)現(xiàn),原來想要實(shí)現(xiàn)跨域,要在請求的header中加入Access-Control-Allow-Origin屬性。
這下子感覺有希望了,于是立即創(chuàng)建一個(gè)http中間件吧。
php artisan make:middleware AccessMiddleware
在里面寫上
記得在kernel.php文件中注冊中間件喲,在$routeMiddleware里添加
"access" => AppHttpMiddlewareAccessMiddleware::class,接下來再來修改路由
Route::group(["middleware" => "access"], function () { Route::post("/register","AuthAuthenticateController@register"); });然后再來測試一下,輸入表單,點(diǎn)立即注冊,之后bingo,token值出來了。
用戶信息也被正常寫入,之后就可以歡快的擴(kuò)展注冊機(jī)制啦。
最后
在這里先規(guī)劃一下吧。首先在控制器內(nèi)添加表單驗(yàn)證,然后返回不同的json數(shù)據(jù)給客戶端。但是畢竟我不是專業(yè)的,我只是愛好這個(gè)才去寫這些東西的,關(guān)于應(yīng)該返回什么數(shù)據(jù)現(xiàn)在腦子里還是一片混亂。如果有大神偶然間看到了我的這篇文章,希望可以給我一點(diǎn)指導(dǎo)和建議,十分的感謝!上面的例子完全是我自己看文檔+原創(chuàng)給整出來的,如果有錯(cuò)請及時(shí)告訴我喲~
上面的例子到最后雖然都實(shí)現(xiàn)了,但是我仍然覺得很 low,畢竟個(gè)人的智慧還是有限的。如果大家有對這個(gè)十分感興趣,可以聯(lián)系我,咱們可以一起邊學(xué)邊做,共同進(jìn)步!我的郵箱:[email protected]
如果恰巧大神路過,請務(wù)必給我一些指導(dǎo),小白將萬分的感謝 O(∩_∩)O~~
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/35772.html
摘要:當(dāng)注冊成功以后,我們應(yīng)該立即返回確認(rèn)用戶登錄的值,并且作為的變量給儲(chǔ)存起來,直到退出時(shí)刪除,或者超出時(shí)間后刪除。在文檔里也有提及,對,就是那個(gè)叫的東東。用戶信息也被正常寫入,之后就可以歡快的擴(kuò)展注冊機(jī)制啦。 前言 根據(jù)上一篇文章,我們已經(jīng)吧dingo/api給安裝并且調(diào)試好了,那么下一步,就是來完善咱們的API了。最首要的步驟一定是要先把注冊的功能給完善了,好了,那就給第一條正式API...
摘要:前期準(zhǔn)備原文地址前言,為什么做以及要做個(gè)啥本人姓小名白,不折不扣編程屆小白一名,但是自從大一那會(huì)兒接觸到編程這件奇妙的事情,就完完全全的陷入的程序的世界??蚣?,是我最喜歡的框架了,沒有之一。 前期準(zhǔn)備 原文地址前言,為什么做以及要做個(gè)啥本人姓小名白,不折不扣編程屆小白一名,但是自從大一那會(huì)兒接觸到編程這件奇妙的事情,就完完全全的陷入的程序的世界。這不,最近又開始折騰APP了,話說現(xiàn)在開...
摘要:前期準(zhǔn)備原文地址前言,為什么做以及要做個(gè)啥本人姓小名白,不折不扣編程屆小白一名,但是自從大一那會(huì)兒接觸到編程這件奇妙的事情,就完完全全的陷入的程序的世界??蚣?,是我最喜歡的框架了,沒有之一。 前期準(zhǔn)備 原文地址前言,為什么做以及要做個(gè)啥本人姓小名白,不折不扣編程屆小白一名,但是自從大一那會(huì)兒接觸到編程這件奇妙的事情,就完完全全的陷入的程序的世界。這不,最近又開始折騰APP了,話說現(xiàn)在開...
閱讀 859·2019-08-30 15:54
閱讀 3325·2019-08-29 15:33
閱讀 2709·2019-08-29 13:48
閱讀 1235·2019-08-26 18:26
閱讀 3342·2019-08-26 13:55
閱讀 1499·2019-08-26 10:45
閱讀 1176·2019-08-26 10:19
閱讀 317·2019-08-26 10:16