如何区分过期令牌和无效令牌之间的错误消息

问题描述 投票:0回答:1

我希望在我的 API 响应中,当令牌过期时,它将返回消息“令牌已过期”,状态代码为 419,当令牌无效时,返回消息“未验证”,状态代码为 401。

我怎样才能做到这一点?

我只使用 Laravel Santum 的基本用法,我希望我可以自定义 Laravel Santum 在令牌过期时的响应与无效令牌不同。

laravel sanctum
1个回答
0
投票

您可以使用中间件来实现此逻辑并创建一个中间件并在句柄函数中:

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
中添加此中间件以获得特定路由。

© www.soinside.com 2019 - 2024. All rights reserved.