【发布时间】:2018-06-16 16:15:55
【问题描述】:
我在使用 JWT package 注销时遇到问题。在 Angular 方面,我正在从本地存储中删除令牌并调用 Laravel API:
logout(): void {
this.cacheHandler.clearCache();
return this.http.get(environment.apiUrl + 'logout')
.toPromise()
.then(response => {
const responseData = response.json();
return responseData.success;
})
.catch(error => {
return error;
});
}
在 Laravel 方面:
public function logout()
{
try {
JWTAuth::invalidate(JWTAuth::getToken());
return response()->json(['success' => true, 'message' => 'Logout successful'], 200);
} catch (JWTException $e) {
return response()->json(['success' => false, 'error' => 'Failed to logout, please try again.'], 500);
}
}
API 方法受 JWT 身份验证中间件保护,因此在调用 API 时,我正在转发存储在本地存储中的授权承载令牌。方法通过,令牌有效。
之后它进入logout() 方法,我得到注销成功的响应。
问题是我可以触发相同的请求,使用相同的令牌,总是得到相同的消息。如果它被无效,它不能触发第二个请求,因为它在中间件后面。
另外,使用相同的令牌,它应该是无效的,我可以调用其他需要身份验证的 API 方法(没有令牌它们不起作用)
【问题讨论】:
标签: php angular laravel authorization jwt