【发布时间】:2021-01-06 01:03:31
【问题描述】:
我正在为我的应用程序使用 tymondesigns/jwt-auth 包。我使用 customClaims 来制作我的令牌。 这是登录代码:
$token_data = [
'iss' => new Issuer('AreteHCM'),
'iat' => new IssuedAt(Carbon::now()) ,
'exp' => new Expiration(Carbon::now()->addDays(1)),
'nbf' => new NotBefore(Carbon::now()),
'sub' => new Subject('AreteHCMS'),
'jti' => new JwtId('AreteHCM'),
'user_data' => $user->user,
'menu_access' => $menu_access,
'login_time' => Carbon::now(),
];
$customClaims = JWTFactory::customClaims($token_data);
$payload = JWTFactory::make($customClaims);
$token = JWTAuth::encode($payload)->get();
对于注销,我使令牌无效,因此用户注销后令牌不能再使用。
JWTAuth::invalidate(JWTAuth::getToken());
我正在使用 Angular 创建 API(后端)和前端团队。一切顺利,直到用户注销并尝试再次登录。登录后,用户获得了新账号,但是当他/她想访问我的中间件时总是拒绝令牌,它说令牌被列入黑名单。
这是我的中间件:
$token = JWTAuth::getToken();
$data = JWTAuth::getPayload($token)->toArray();
它总是显示错误:
The token has been blacklisted in file C:\xampp\htdocs\aretehcm\vendor\tymon\jwt-auth\src\Manager.php on line 109
我想接近的是:
- 用户登录获取新token来访问API(每个API请求都需要header auth Bearer token)
- 用户注销将使令牌失效,因此无法再使用令牌访问 API
- 用户登录将获得一个新令牌,以便他/她可以访问 API
我对 JWT-API 架构有什么误解吗? 提前感谢您的回复和回答。
【问题讨论】:
-
如何将令牌保存到数据库?请添加该代码。
-
尝试使用logout 而不是
invalidate()
标签: php laravel laravel-5 jwt jwt-auth