laravel封装jwt
时间: 2023-10-07 13:05:25 浏览: 45
在Laravel中封装JWT(JSON Web Token)有如下几个步骤:
1. 首先,在路由中使用中间件来验证API登录状态。通过调用`Route::group`方法,并传入`middleware`参数和对应的中间件类,可以将需要验证登录状态的路由进行分组。例如:
```
Route::group(['middleware' => 'checkApiLogin'], function () {
// 路由代码
});
```
2. 在中间件中编写代码,将token放入header中进行传输。在中间件的`handle`方法中,可以通过`$request->header('token')`来获取header中的token,将token存储在Redis中。如果token不存在,可以返回一个错误响应。如果token存在,则将解密后的用户ID传递给下一步处理。例如:
```
public function handle(Request $request, Closure $next)
{
$token = Redis::get('token');
if (!$token) {
return response()->json(['code' => 500, 'msg' => 'token不存在', 'data' => []]);
}
$userId = JwtServer::decodeToken($token);
if ($userId) {
$request->attributes->add(['user_id' => $userId->user_id]);
} else {
return response()->json(['code' => 500, 'msg' => 'token过期', 'data' => []]);
}
return $next($request);
}
```
3. 实现生成token和解析token的功能。在相关的控制器类中,可以编写生成token和解析token的方法。生成token时,可以从请求参数中获取用户ID,调用`JwtServer::createToken`方法生成token,并将token存储在Redis中。解析token时,可以从Redis中获取token,调用`JwtServer::decodeToken`方法解析token,并获取用户ID。例如:
```
// 生成token
public function createtoken()
{
$userId = request()->get('userId');
$token = JwtServer::createToken($userId);
Redis::setex('token', 120, $token);
dd($token);
}
// 获取ID
public function decodeToken()
{
$token = Redis::get('token');
$userId = JwtServer::decodeToken($token);
$userId = json_decode(json_encode($userId), true);
dd($userId['user_id']);
}
public function Token()
{
dd('我口袋只剩玫瑰一片,此行山高又路远。');
}
```
这样,就完成了在Laravel中封装JWT的相关步骤。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* *2* *3* [laravel8 实现接口鉴权封装使用JWT](https://blog.csdn.net/code_nutter/article/details/125984755)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"]
[ .reference_list ]