[英]How can revoke token in multi authenticate in laravel?
我寫了一個登錄方法,它起作用了。 我的身份驗證配置:
'guards' => [
'web' => [
'driver' => 'session',
'provider' => 'users',
],
'api' => [
'driver' => 'passport',
'provider' => 'users',
],
'admin-web' => [
'driver' => 'session',
'provider' => 'admins',
],
'admin-api' => [
'driver' => 'passport',
'provider' => 'admins',
],
],
我寫了一個注銷方法,如:
public function logout(Request $request)
{
Auth::guard('admin-web')->logout();
$value = $request->bearerToken();
$id = (new Parser())->parse($value)->getHeader('jti');
$token = $request->user()->tokens->find($id);
}
但它無法在此列中找到令牌:
$token = $request->user()->tokens->find($id);
並拋出錯誤:
Trying to get property 'tokens' of non-object
一旦您調用Auth::guard('admin-web')->logout()
您將無法從請求中檢索用戶。 您必須在注銷用戶之前檢索令牌:
public function logout(Request $request)
{
$value = $request->bearerToken();
$id = (new Parser())->parse($value)->getHeader('jti');
$token = $request->user('admin-web')->tokens->find($id);
Auth::guard('admin-web')->logout();
}
如下使用並檢查它您錯過了 $id 參數。
public function logout(Request $request,$id)
{
$value = $request->bearerToken();
$id = (new Parser())->parse($value)->getHeader('jti');
$token = $request->user('admin-web')->tokens->find($id);
\Auth::guard('admin-web')->logout();
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.