有web和api路由文件。 Web路由由auth保护,未经身份验证的用户将被重定向到登录页面。但我的要求是在api路由文件中。未经身份验证的api路由应该获得自定义的json响应,而不是重定向到登录页面。 我是护照功能的新手。我不能改变Web路由,因为它是由其他开发人员制作的。
答案 0 :(得分:0)
当laravel请求未被授权(也称为“未经验证的api路由”)时,无论是web还是api路由,laravel都会抛出相同的异常。
但是,当应用程序处理/呈现异常时,响应由$request->expectsJson()
确定,如果为真,则将其返回为json,否则它将表现为Web路由。
上述函数检查多个函数,如果其中任何一个函数是正确的,则返回true:
X-Requested-With
=== XMLHttpRequest
Content-Type
包含application/json
Content-Type
包含通配符(*/*
)Accept
包含application/json
确保您的api请求与上述任何标头匹配,在这种情况下,应将身份验证错误返回为json。
要强制api路由始终抛出json身份验证错误,您可以执行以下任何操作:
答案 1 :(得分:0)
我将app / Exception / Handler.php方法的渲染方法更新为如下,并且有效。
{
if($exception instanceof \Illuminate\Auth\AuthenticationException && $request->is('api/v*'))
{
return Response(['success'=>-1,'statuscode'=>401,'msg'=>'Sorry, your account has been logged in from another device.'],401);
}
return parent::render($request, $exception);
}