1. 程式人生 > >laravel使用者認證 JWT-Auth 前後端分離

laravel使用者認證 JWT-Auth 前後端分離

本章主要介紹前後端徹底分離時,如何使用laravel實現API認證,(laravel5.5)

首先,你得有一個laravel專案,拉取新框架命令:composer create-project laravel/laravel 專案名稱 --prefer-dist “5.5.*”

Begining:
1.安裝Jwt-auth擴充套件包。
composer require tymon/jwt-auth
2.安裝完成後在配置檔案 config/app.php 中註冊服務提供者和別名。

‘providers’ => [

Tymon\JWTAuth\Providers\JWTAuthServiceProvider::class,
]

‘aliases’ => [

‘JWTAuth’ => Tymon\JWTAuth\Facades\JWTAuth::class,
]
3.釋出資源和配置。
php artisan vendor:publish --provider=“Tymon\JWTAuth\Providers\JWTAuthServiceProvider”
4.在釋出的配置中生成key。
php artisan jwt:generate
不出意外,上述命令會報錯。
這時你需要在vendor / tymon / jwt-auth/src / Commands中的JWTGenerateCommand.php中
寫入public function handle() { $this->fire(); }
如:在這裡插入圖片描述

5.再次執行 php artisan jwt:generate

6.編輯 app/Http/Kernel.php 新增 jwt.auth 和 jwt.refresh 到應用路由中介軟體陣列:
protected $routeMiddleware = [

‘jwt.auth’ => \Tymon\JWTAuth\Middleware\GetUserFromToken::class,
‘jwt.refresh’ => \Tymon\JWTAuth\Middleware\RefreshToken::class,
];
完成以上操作接下來就行註冊路由,建立控制器,進行 API 功能驗證了。
一、建立路由
Route::get(‘register’,‘

[email protected]’); //註冊
Route::get(‘login’,‘[email protected]’); //登入

Route::post(‘auth/login’, ‘[email protected]’);
Route::group([‘middleware’ => ‘jwt.auth’], function(){
Route::get(‘auth/user’, ‘[email protected]’);
Route::post(‘auth/logout’, ‘[email protected]’);
});
Route::group([‘middleware’ => ‘jwt.refresh’], function(){
Route::get(‘auth/refresh’, ‘

[email protected]’);
});

二、控制器程式碼

<?php namespace App\Http\Controllers; use App\User; use Illuminate\Http\Request; use Illuminate\Support\Facades\Auth; use Illuminate\Support\Facades\Validator; use Tymon\JWTAuth\Facades\JWTAuth; class AuthController extends Controller { //使用者註冊 public function register(Request $request){ $valid = Validator::make($request->all(), [ 'name' => 'required|string|unique:users', 'email' => 'required|email|unique:users', 'password' => 'required|string|min:6|max:10', ]); if ($valid->fails()) { return array( 'code' => 1, 'message' => $valid->errors()->first(), 'data' => [] ); } $user = new User(); $user->name = $request->name; $user->email = $request->email; $user->password = bcrypt($request->password); $user->save(); //插入資料庫,建立使用者 return $user; } //使用者登入 public function login(Request $request){ $credentials = $request->only('email', 'password'); if(!$token = JWTAuth::attempt($credentials)){ return 'error'.$token; } // return Auth::user(); //此處可以獲取登入成功使用者的資訊,如賬號,郵箱等 return $token; } public function logout(){ JWTAuth::invalidate(); return '退出成功'; } public function user() { $user = User::find(Auth::user()->id); return response([ 'status' => 'success', 'data' => $user ]); } public function refresh() { return response([ 'status' => 'success' ]); } } 至此,只要訪問jwt.auth中介軟體內的路由,都需要登入,登陸之後會得到一個token,帶上token才能訪問。 PS:儲存使用者資訊的表為框架自帶的,只需要執行遷移命令 php artisan migrate 你也可以根據專案需要重新建立使用者表。 學院君-原文連結:https://laravelacademy.org/post/9178.html#toc_3