我希望在我的 API 响应中,当令牌过期时,它将返回消息“令牌已过期”,状态代码为 419,当令牌无效时,返回消息“未验证”,状态代码为 401。
我怎样才能做到这一点?
我只使用 Laravel Santum 的基本用法,我希望我可以自定义 Laravel Santum 在令牌过期时的响应与无效令牌不同。
您可以使用中间件来实现此逻辑并创建一个中间件并在句柄函数中:
public function handle(Request $request, Closure $next)
{
if (Auth::guard('sanctum')->guest()) {
throw new AuthenticationException('Unauthenticated.');
}
// if token is expired
if (Auth::guard('sanctum')->user()->tokenCan('expired')) {
return response()->json(['message' => 'Token expired'], 419);
}
// if token is invalid
if (Auth::guard('sanctum')->user()->tokenCan('invalid')) {
throw new UnauthorizedException('Unauthenticated.');
}
return $next($request);
}
如果使用 laravel 11,请在
bootstrap/app.php
中添加此中间件以获得特定路由。