laravel 项目中JWT的实际应用(三)(完结)

马克飞 1月前 75

继续接上面两篇,如果没看过的可以出门右转找找,这是完结篇了. 文末附了完整版本的MD,欢迎下载

JWT的方法

  • JWT的两个Facade

    JWTAuth::parseToken()->方法() 一般都可以换成 auth()->方法().

  • token 生成

// 根据user账密新建一个token
$credentials = $request->only('email', 'password');
$token = JWTAuth::attempt($credentials);
// 根据user对象生成一个token
$user = User::find(1);
$token = JWTAuth::fromUser($user);
  • token 控制
// 更新token
$newToken = JWTAuth::parseToken()->refresh();
// 让一个token无效
JWTAuth::parseToken()->invalidate();
// 检验token是否有效
if(JWTAuth::parseToken()->check()) {
    dd("token是有效的");
}
  • token 解析
// 从token中解析出用户信息
$user = JWTAuth::parseToken()->toUser();

token的三个时间

  • token一般来说有三个时间属性,其配置都在config/jwt.php内.

    有效时间

    有效时间指的是你获得token后,在多少时间内可以凭这个token,去获取内容,逾期无效.

// 单位:分钟
'ttl' => env('JWT_TTL', 60)

刷新时间

刷新时间指的是在这个时间内可以凭旧 token 换取一个新 token。例如 token 有效时间为 60 分钟,刷新时间为 20160 分钟,在 60 分钟内可以通过这个 token 获取新 token,但是超过 60 分钟是不可以的,然后你可以一直循环获取,直到总时间超过 20160 分钟,不能再获取。

// 单位:分钟
'refresh_ttl' => env('JWT_REFRESH_TTL', 20160)

宽限时间

宽限时间是为了解决并发请求的问题,假如宽限时间为 0s ,那么在新旧 token 交接的时候,并发请求就会出错,所以需要设定一个宽限时间,在宽限时间内,旧 token 仍然能够正常使用。

// 宽限时间需要开启黑名单(默认是开启的),黑名单保证过期token不可再用,最好打开
'blacklist_enabled' => env('JWT_BLACKLIST_ENABLED', true)

// 设定宽限时间,单位:秒
'blacklist_grace_period' => env('JWT_BLACKLIST_GRACE_PERIOD', 60)
上传的附件:
最新回复 (0)
    • 都市菜鸟网
      2
        立即登录 立即注册 
返回