退出Laravel 7圣域

ahy6op9u  于 2022-11-18  发布在  其他
关注(0)|答案(5)|浏览(119)

我正在使用Laravel 7和Sanctum验证我的应用程序。
如何执行注销程序?
我用途:

Auth::user()->tokens()->delete();

它工作,但它删除此用户的所有令牌。我想只删除请求注销的用户的令牌,这样其他会话应该保持打开

yrdbyhpb

yrdbyhpb1#

您需要指定用户:
第一个
更新Laravel 7、8、9

// Revoke the token that was used to authenticate the current request...
$request->user()->currentAccessToken()->delete();

// Revoke a specific token...
$user->tokens()->where('id', $tokenId)->delete();
isr3a4wc

isr3a4wc2#

针对Laravel 8.x.x的更新

您可以使用三种不同的方法

// Revoke all tokens...
$user->tokens()->delete();

// Revoke the token that was used to authenticate the current request...
$request->user()->currentAccessToken()->delete();

// Revoke a specific token...
$user->tokens()->where('id', $tokenId)->delete();
8yoxcaq7

8yoxcaq73#

对于注销,如果使用currentAccessToken(),则可以直接删除令牌。

$request->user()->currentAccessToken()->delete();
inn6fuwd

inn6fuwd4#

要注销,请输入laravel 9

use Laravel\Sanctum\PersonalAccessToken;

   // Get bearer token from the request
    $accessToken = $request->bearerToken();
    
    // Get access token from database
    $token = PersonalAccessToken::findToken($accessToken);

    // Revoke token
    $token->delete();
kt06eoxx

kt06eoxx5#

对于那些遇到关于currentAccessToken()错误(null或undefined)的人,不要忘记将注销路由放在auth:sanctum中间件中。
所以使用后

$request->user()->currentAccessToken()->delete();

将注销路由设置为:

Route::middleware('auth:sanctum')->group( function () {
    Route::post('logout', [AuthController::class, 'signout']);
});

相关问题