13

我正在为我的应用程序使用 Laravel 7 和 Sanctum 身份验证。
如何实施注销程序?
我用:

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

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

4

3 回答 3

19

您需要指定用户:

// Revoke a specific user token
Auth::user()->tokens()->where('id', $id)->delete();
// Get user who requested the logout
$user = request()->user(); //or Auth::user()
// Revoke current user token
$user->tokens()->where('id', $user->currentAccessToken()->id)->delete();

Laravel 7、8更新:

// 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();
于 2020-06-21T10:12:56.090 回答
8

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

$request->user()->currentAccessToken()->delete();
于 2020-08-02T15:55:30.690 回答
7

Laravel 8.xx 更新

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

// 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();
于 2021-07-20T17:16:10.520 回答