Laravel5.4 簡單實現app介面 Api Token認證
阿新 • • 發佈:2019-02-19
我是小白,今天寫這篇文章主要是給新手學習看的,大佬就不用看了,有很多不足望大家指出,共同進步。
在開發中許多 API 通常在返回響應之前都需要某種形式的認證,有些時候,一個認證的請求和一個未認證的請求,響應可能不同。
在web專案中,實現認證比較輕鬆,那麼前後端分離的專案中,我們要怎麼實現認證,今天這篇文章就以 API token 認證機制,使用Token可以解決laravel API的無狀態認證。
一、給使用者表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
三、使用者註冊:
在註冊的控制器檔案的建立使用者中新增api_token
欄位:我這裡的控制器是
App\Http\Controllers\Api\R
egisterController.phpprotected function register(Request $request) { $input = $request->all(); //獲取傳過來的傳數 //在這裡設定生成token後,與賬號密碼等資訊一起存進User表 $user = User::create($data); //存進資料庫 return $token; //這裡面的邏輯自己寫 我這裡只是簡單實現 }
最後,不要忘記在
App\User.php
使用者模型表中的 $fillable
屬性當中新增api_token
欄位:
/**
* The attributes that are mass assignable.
*
* @var array
*/
protected $fillable = [
'name', 'email', 'password','confirmation_token','api_token'
];
四、修改api driver:
接下來要在config\auth.php 修改如下內容:'guards' => [
'web' => [
'driver' => 'session',
'provider' => 'users',
],
'api' => [
'driver' => 'token', //把driver設定為token
'provider' => 'users',
],
],
五、如何使用:接下來,我們要新增路由,在routes\api.php檔案修改:
Route::group(['middleware' => 'token'], function(){
Route::post('register', 'API\UserController@register');
});
怎麼訪問?我們這裡用postman來測試: 到些就大功告成了! 注意,這個只是基礎認證,現在開發還是用別人已經開發好的外掛好,比如oAuth2, basic,jwt,Passport等等。 哦對了,如果想看token的認證原理,我們可以看他的底層原始碼
vendor\laravel\framework\src\Illuminate\Auth\TokenGuard.php:
這個我也看不明白,哈!再見!