Laravel5.4簡單實現(xiàn)app接口Api Token認(rèn)證方法
我是小白,今天寫這篇文章主要是給新手學(xué)習(xí)看的,大佬就不用看了,有很多不足望大家指出,共同進(jìn)步。
在開發(fā)中許多 API 通常在返回響應(yīng)之前都需要某種形式的認(rèn)證,有些時候,一個認(rèn)證的請求和一個未認(rèn)證的請求,響應(yīng)可能不同。
在web項目中,實現(xiàn)認(rèn)證比較輕松,那么前后端分離的項目中,我們要怎么實現(xiàn)認(rèn)證,今天這篇文章就以 API token 認(rèn)證機(jī)制,使用Token可以解決laravel API的無狀態(tài)認(rèn)證。
一、給用戶表users增加api_token字段
php artisan make:migration add_api_token_to_users
首先,給用戶表中增加 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
三、用戶注冊:
在注冊的控制器文件的創(chuàng)建用戶中添加 api_token 字段:
我這里的控制器是App\Http\Controllers\Api\RegisterController.php
protected function register(Request $request)
{
$input = $request->all(); //獲取傳過來的傳數(shù)
//在這里設(shè)置生成token后,與賬號密碼等信息一起存進(jìn)User表
$user = User::create($data); //存進(jìn)數(shù)據(jù)庫
return $token;
//這里面的邏輯自己寫 我這里只是簡單實現(xiàn)
}
最后,不要忘記在 App\User.php用戶模型表中的 $fillable 屬性當(dāng)中添加api_token字段:
/** * The attributes that are mass assignable. * * @var array */ protected $fillable = [ 'name', 'email', 'password','confirmation_token','api_token' ];
四、修改api driver:
接下來要在config\auth.php 修改如下內(nèi)容:
'guards' => [ 'web' => [ 'driver' => 'session', 'provider' => 'users', ], 'api' => [ 'driver' => 'token', //把driver設(shè)置為token 'provider' => 'users', ], ],
五、如何使用:
接下來,我們要添加路由,在routes\api.php文件修改:
Route::group(['middleware' => 'token'], function(){
Route::post('register', 'API\UserController@register');
});
怎么訪問?我們這里用postman來測試:

到些就大功告成了! 注意,這個只是基礎(chǔ)認(rèn)證,現(xiàn)在開發(fā)還是用別人已經(jīng)開發(fā)好的插件好,比如oAuth2,basic,jwt,Passport等等。
哦對了,如果想看token的認(rèn)證原理,我們可以看他的底層源碼
vendor\laravel\framework\src\Illuminate\Auth\TokenGuard.php:

這個我也看不明白,哈!再見!
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
分享微信掃碼支付開發(fā)遇到問題及解決方案-附Ecshop微信支付插件
微信掃碼支付在購物商城非常流行,本篇文章給大家分享微信掃碼支付開發(fā)遇到問題及解決方案-附Ecshop微信支付插件,需要的朋友可以參考下2015-08-08
在Windows下編譯適用于PHP 5.2.12及5.2.13的eAccelerator.dll(附下載)
最近PHP 5.2.12及5.2.13發(fā)布了,修復(fù)了多個bug,因此升級到這一版本是非常必要的。2010-05-05
淺談php中變量的數(shù)據(jù)類型判斷函數(shù)
下面小編就為大家?guī)硪黄獪\談php中變量的數(shù)據(jù)類型判斷函數(shù)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-03-03
TP5使用RabbitMQ實現(xiàn)消息隊列的項目實踐
本文主要介紹了TP5使用RabbitMQ實現(xiàn)消息隊列的項目實踐,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-06-06
ThinkPHP頁面跳轉(zhuǎn)success與error方法概述
這篇文章主要介紹了ThinkPHP頁面跳轉(zhuǎn)success與error方法概述,需要的朋友可以參考下2014-06-06
ThinkPHP中html:list標(biāo)簽用法分析
這篇文章主要介紹了ThinkPHP中html:list標(biāo)簽用法,較為詳細(xì)的分析總結(jié)了ThinkPHP中html:list標(biāo)簽的定義、使用方法及相關(guān)注意事項,需要的朋友可以參考下2016-01-01

