laravel用户认证 JWT-Auth 前后端分离

时间:2019-01-10
本文章向大家介绍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’,‘AuthController@register’); //注册
Route::get(‘login’,‘AuthController@login’); //登录

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

二、控制器代码

<?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