以前也看过laravel的中间件,可能由于没有经常使用就忘了(好吧我承认是技术太菜了),在学习JWT的时候又重新学了一遍,这次要把它记录下来,并且在项目中去使用
这里使用中间件去验证token
创建中间件文件
在项目文件夹中创建JwtMiddleware.php文件,路径为 app\Http\Middleware\JwtMiddleware.php
<?php
namespace App\Http\Middleware;
use App\Http\Response\ResponseJson; // 引入统一返回Trait
use App\Common\Err\ApiErrDesc; // 引入错误码管理文件
use App\Common\Auth\JwtAuth; // 引入JWT 生成和验证token类
use Closure;
class JwtMiddleware
{
use ResponseJson;
/**
* The names of the attributes that should not be trimmed.
*
* @var array
*/
public function handle($request, Closure $next)
{
$result = $request->all();
$token = $result['token'];
if( $token ){
// jwt验证类实例化
$JwtAuth = JwtAuth::getinstance();
$JwtAuth->setToken($token);
// 验证token是否过期 被串改
if( $JwtAuth->verify() ){
//验证通过执行下一步
return $next($request);
}else{
// token 验证失败
return $this->jsonErrorData(ApiErrDesc::ERROR_LOGIN[0], ApiErrDesc::ERROR_LOGIN[1]);
}
}else{
// token不存在
return $this->jsonErrorData(ApiErrDesc::ERROR_PARAMS[0], ApiErrDesc::ERROR_PARAMS[1]);
}
}
}
注册中间件
在路径\app\Http\Kernel.php 文件夹中 找到$routeMiddleware ,在数组末尾中加入jwt_auth元素
'jwt_auth' => \App\Http\Middleware\JwtMiddleware::class,
使用中间件
在路由文件api.php中使用,路径为\routes\api.php
// 我这里是一个小程序的前台Banner图接口为例
// 在xiaocx 板块路由组中加入'middleware' => ['jwt_auth'] 就可以了
Route::group( [ 'prefix' => 'xiaocx','middleware' => ['jwt_auth'] ] , function () {
// 获取首页轮播
Route::match(['get','post'], 'bannerImgs', 'xiaocx\BannerController@index');
});
这样就完成了,只要在这个路由组里面的的接口都会被中间件jwt_auth验证,这样就实现了接口鉴权啦,下一篇文章,完成jwt 相关的东西
网友评论