【问题标题】:Laravel Passport - Change default Unauthenticated response to custom oneLaravel Passport - 将默认未经身份验证的响应更改为自定义响应
【发布时间】:2020-12-18 01:22:41
【问题描述】:

提前谢谢你,

我正在使用 laravel 护照进行 API 用户身份验证,而如果 access_token 无效,那么我们将收到如下响应

{ 
    "message": "Unauthenticated." 
}

但我希望得到如下回复

{ 
    "code" : 0,
    "message": "Unauthenticated." 
    "data" : [],
}

【问题讨论】:

    标签: laravel api response laravel-passport


    【解决方案1】:

    如果你想改变 Laravel 呈现错误的方式,你可以在 app/Exceptions/Handler.php 类中进行。

    在这种特殊情况下,您可以通过在 Handler 类中添加 te 来覆盖 unauthenticated 方法:

    protected function unauthenticated($request, AuthenticationException $exception)
    {
        if ($request->expectsJson()) {
            return response()->json([
                'message' => $exception->getMessage(),
                'code'    => 0,
                'data'    => [],
            ], 401);
        }
    
        return redirect()->guest($exception->redirectTo() ?? route('login'));
    }
    

    【讨论】:

    • 好的,谢谢/这会产生任何其他问题,或者这个异常方法只会在访问令牌错误时调用?或者还有其他护照方法可以做同样的事情吗?如果有的话
    • @RonakSolanki 只要抛出未经身份验证的异常就会触发,例如每当未经身份验证的用户尝试访问受保护的路由时。
    • @RonakSolanki 这个回答是您的问题还是您在更改未经验证的响应时仍有问题?
    • 您好,抱歉耽搁了,是的,我使用了您回答中的一些逻辑。谢谢
    • @RonakSolanki 很高兴我能帮上忙! :)
    猜你喜欢
    • 2019-10-07
    • 2019-05-30
    • 2014-11-25
    • 2019-09-09
    • 1970-01-01
    • 2019-03-12
    • 2019-06-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多