我正在使用 Laravel 7 和 Sanctum 认证我的应用程序。
我该如何实现登出过程?
我使用:
Auth::user()->tokens()->delete();
它可以工作,但它删除了该用户的所有令牌。我想只删除请求注销的用户的令牌,这样其他会话应该保持打开状态。
我正在使用 Laravel 7 和 Sanctum 认证我的应用程序。
我该如何实现登出过程?
我使用:
Auth::user()->tokens()->delete();
它可以工作,但它删除了该用户的所有令牌。我想只删除请求注销的用户的令牌,这样其他会话应该保持打开状态。
你需要指定用户:
// 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();
// 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();
你可以使用三种不同的方法。
// 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();
对于退出登录,如果您使用currentAccessToken(),则可以直接删除令牌。
$request->user()->currentAccessToken()->delete();
User
模型上添加HasApiTokens
特性。 - Stefan Tanevskiauth()->user()->tokens()->delete()
。 - Paul Iverson Cortez在 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();
对于那些遇到 currentAccessToken()
为 null 或未定义的错误的人,请不要忘记将您的注销路由放在 auth:sanctum
中间件中。
这样做后,再执行其他操作。
$request->user()->currentAccessToken()->delete();
Route::middleware('auth:sanctum')->group( function () {
Route::post('logout', [AuthController::class, 'signout']);
});
$id = Auth :: user()-> id;
来获取$id。所以它应该是Auth :: user()-> tokens()-> where('id',Auth :: user()-> id)-> delete();
。 - STAApp\Models\User::tokens()
@RejaulApp\Models\User::tokens()
- STA