有网络和api路由文件。Web路由由auth保护,未经身份验证的用户将被重定向到登录页面。但是我的要求是在api路由文件中。未经身份验证的api路由应该得到一个自定义的json响应,而不是重定向到登录页面。我对护照的功能很陌生。而且我不能更改Web路由,因为它是由其他开发人员制作的。
发布于 2018-05-04 07:44:50
我更新了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);
}发布于 2018-05-04 07:30:07
当laravel请求未被授权(也称为“未经身份验证的api路由”)时,laravel抛出相同的异常,而不管它是web还是api路由。
但是,当应用程序处理/呈现异常时,响应由$request->expectsJson()确定,如果它的真响应返回为json,则它将充当web路由。
上面的函数检查多个函数,如果其中任何数目正确,则返回true:
X-Requested-With === XMLHttpRequestContent-Type包含application/jsonContent-Type包含通配符(*/*)Accept包含application/json确保您的api请求与上述任何一个标头匹配,在这种情况下,应该以json的形式返回身份验证错误。
要强制api路由始终抛出json身份验证错误,您可以执行以下任何操作:
https://stackoverflow.com/questions/50168414
复制相似问题