首页 > 解决方案 > 如何在 Laravel AuthServiceProvider 中返回 JSON?

问题描述

我正在检查boot()方法中的令牌并捕获无效令牌。在令牌无效的情况下如何返回一些响应?

这是我的代码:

public function boot(Authenticator $authenticator)
{
        Auth::viaRequest('auth-token', function ($request) use ($authenticator) {
            $bearerToken = $request->bearerToken();

            if ($bearerToken) {
                try {
                    return $authenticator->getUser($bearerToken);
                } catch (InvalidTokenException $exeception) {
                    return response()->json(['token_invalid'], 400);
                }
            }
        });
}

它给我带来了错误:

方法 Illuminate\Http\JsonResponse::getAuthIdentifier 不存在。

标签: jsonlaravel

解决方案


文档

传递给该方法的第二个参数应该是一个闭包,它接收传入的 HTTP 请求并返回一个用户实例,或者,如果身份验证失败,则返回null

因此,不要返回响应对象,而是返回 null:

if ($bearerToken) {
    try {
        return $authenticator->getUser($bearerToken);
    } catch (InvalidTokenException $exeception) {
        return null;
    }
}

推荐阅读