Laravel5.4簡(jiǎn)單實(shí)現(xiàn)app接口Api Token認(rèn)證方法
我是小白,今天寫(xiě)這篇文章主要是給新手學(xué)習(xí)看的,大佬就不用看了,有很多不足望大家指出,共同進(jìn)步。
在開(kāi)發(fā)中許多 API 通常在返回響應(yīng)之前都需要某種形式的認(rèn)證,有些時(shí)候,一個(gè)認(rèn)證的請(qǐng)求和一個(gè)未認(rèn)證的請(qǐng)求,響應(yīng)可能不同。
在web項(xiàng)目中,實(shí)現(xiàn)認(rèn)證比較輕松,那么前后端分離的項(xiàng)目中,我們要怎么實(shí)現(xiàn)認(rèn)證,今天這篇文章就以 API token 認(rèn)證機(jī)制,使用Token可以解決laravel API的無(wú)狀態(tài)認(rèn)證。
一、給用戶(hù)表users增加api_token字段
php artisan make:migration add_api_token_to_users
首先,給用戶(hù)表中增加 api_token字段,在生成的遷移文件中添加字段:
<?php use Illuminate\Support\Facades\Schema; use Illuminate\Database\Schema\Blueprint; use Illuminate\Database\Migrations\Migration; class AddApiTokenToUsers extends Migration { /** * Run the migrations. * * @return void */ public function up() { Schema::table('users', function (Blueprint $table) { $table->string('api_token', 64)->unique(); }); } /** * Reverse the migrations. * * @return void */ public function down() { Schema::table('users', function (Blueprint $table) { $table->dropColumn(['api_token']); //新增加的 }); } }
二、然后使用下面的命令將字段添加到表中:
php artisan migrate
三、用戶(hù)注冊(cè):
在注冊(cè)的控制器文件的創(chuàng)建用戶(hù)中添加 api_token
字段:
我這里的控制器是App\Http\Controllers\Api\R
egisterController.php
protected function register(Request $request) { $input = $request->all(); //獲取傳過(guò)來(lái)的傳數(shù) //在這里設(shè)置生成token后,與賬號(hào)密碼等信息一起存進(jìn)User表 $user = User::create($data); //存進(jìn)數(shù)據(jù)庫(kù) return $token; //這里面的邏輯自己寫(xiě) 我這里只是簡(jiǎn)單實(shí)現(xiàn) }
最后,不要忘記在 App\User.php
用戶(hù)模型表中的 $fillable
屬性當(dāng)中添加api_token
字段:
/** * The attributes that are mass assignable. * * @var array */ protected $fillable = [ 'name', 'email', 'password','confirmation_token','api_token' ];
四、修改api driver:
接下來(lái)要在config\auth.php 修改如下內(nèi)容:
'guards' => [ 'web' => [ 'driver' => 'session', 'provider' => 'users', ], 'api' => [ 'driver' => 'token', //把driver設(shè)置為token 'provider' => 'users', ], ],
五、如何使用:
接下來(lái),我們要添加路由,在routes\api.php文件修改:
Route::group(['middleware' => 'token'], function(){ Route::post('register', 'API\UserController@register'); });
怎么訪(fǎng)問(wèn)?我們這里用postman來(lái)測(cè)試:
到些就大功告成了! 注意,這個(gè)只是基礎(chǔ)認(rèn)證,現(xiàn)在開(kāi)發(fā)還是用別人已經(jīng)開(kāi)發(fā)好的插件好,比如oAuth2,basic,jwt,Passport等等。
哦對(duì)了,如果想看token的認(rèn)證原理,我們可以看他的底層源碼
vendor\laravel\framework\src\Illuminate\Auth\TokenGuard.php:
這個(gè)我也看不明白,哈!再見(jiàn)!
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- Laravel如何實(shí)現(xiàn)適合Api的異常處理響應(yīng)格式
- Laravel5.5+ 使用API Resources快速輸出自定義JSON方法詳解
- laravel接管Dingo-api和默認(rèn)的錯(cuò)誤處理方式
- 在Laravel中使用GuzzleHttp調(diào)用第三方服務(wù)的API接口代碼
- Laravel實(shí)現(xiàn)ApiToken認(rèn)證請(qǐng)求
- laravel框架 api自定義全局異常處理方法
- laravel dingo API返回自定義錯(cuò)誤信息的實(shí)例
- laravel 配置路由 api和web定義的路由的區(qū)別詳解
- 詳解Laravel制作API接口
相關(guān)文章
PHP PDO預(yù)處理語(yǔ)句及事務(wù)的使用
今天這篇文章,我們來(lái)簡(jiǎn)單的學(xué)習(xí)一下 PDO 中的預(yù)處理語(yǔ)句以及事務(wù)的使用,它們都是在 PDO 對(duì)象下的操作,而且并不復(fù)雜,簡(jiǎn)單的應(yīng)用都能很容易地實(shí)現(xiàn)。只不過(guò)大部分情況下,大家都在使用框架,手寫(xiě)的機(jī)會(huì)非常少。2021-06-06laravel利用中間件做防非法登錄和權(quán)限控制示例
今天小編就為大家分享一篇laravel利用中間件做防非法登錄和權(quán)限控制示例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-10-10PHP使用DOMDocument類(lèi)生成HTML實(shí)例(包含常見(jiàn)標(biāo)簽元素)
這篇文章主要介紹了PHP使用DOMDocument類(lèi)生成HTML實(shí)例,包含常見(jiàn)標(biāo)簽元素,如表單、表格、CSS樣式等,最后寫(xiě)了一個(gè)比較完整的例子,給需要的朋友參考下2014-06-06PHP+jQuery 注冊(cè)模塊開(kāi)發(fā)詳解
本文主要是記錄了開(kāi)發(fā)PHP+jQuery注冊(cè)模塊的全過(guò)程,包含填寫(xiě)欄目用戶(hù)名、郵箱、密碼、重復(fù)密碼、驗(yàn)證碼等,非常的詳細(xì),推薦給大家2014-10-10使用php從身份證號(hào)中獲取一系列線(xiàn)索(星座、生肖、生日等)
這篇文章主要為大家詳細(xì)介紹了使用php從身份證號(hào)中獲取一系列線(xiàn)索,比如星座、生肖、生日等,PHP從提取身份證號(hào)碼中的生日并驗(yàn)證是否成年的函數(shù),感興趣的小伙伴們可以參考一下2016-05-05PHP輸出當(dāng)前進(jìn)程所有變量/常量/模塊/函數(shù)/類(lèi)的示例
PHP輸出當(dāng)前進(jìn)程所有變量、常量、模塊、函數(shù)、類(lèi)的示例2013-11-11基于jQueryUI和Corethink實(shí)現(xiàn)百度的搜索提示功能
這篇文章主要介紹了基于jQueryUI和Corethink實(shí)現(xiàn)百度的搜索提示功能,這里是以corethink模塊的形式,只需要安裝上訪(fǎng)問(wèn)index.php?s=/test/index 就可以了,需要的朋友可以參考下2016-11-11Codeigniter檢測(cè)表單post數(shù)據(jù)的方法
這篇文章主要介紹了Codeigniter檢測(cè)表單post數(shù)據(jù)的方法,實(shí)例分析了Codeigniter獲取及檢測(cè)post數(shù)據(jù)的技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-03-03