Laravel 5基本认证自定义错误



在Laravel 5中,如果用户的基本认证失败,那么返回的默认消息是一个"Invalid Credentials"错误字符串。当这种情况发生时,我试图返回一个自定义JSON错误。

我可以编辑vendor/laravel/framework/src/Illuminate/Auth/SessionGuard.php中返回的响应但是,我还没有看到您可以在供应商目录之外更改此消息的行为。有办法吗?

看起来Laravel 4有一些方法可以做到这一点:

弄清楚了,看起来我必须创建自定义中间件来处理这个问题。请注意,当从浏览器调用我的API时,这个解决方案不起作用,只有当从像Postman这样的工具调用它时才起作用。由于某种原因,当我从浏览器调用它时,我总是在看到基本的验证提示符之前得到错误。

在我的控制器中,我将中间件更改为我新创建的中间件:

$this->middleware('custom');

在Kernel中我添加了它的位置:

protected $routeMiddleware = [
    'auth.basic.once' =>  AppHttpMiddlewareCustom::class,
]

然后我创建中间件。我使用无状态基本验证,因为我正在创建一个API:

<?php
namespace AppHttpMiddleware;
use Auth;
use Closure;
use IlluminateHttpRequest as HttpRequest;
use AppEntitiesCustomErrorResponse
class Custom
{
    public function __construct(CustomErrorResponse $customErrorResponse) {
        $this->customErrorResponse = $customErrorResponse
    }
     public function handle($request, Closure $next)
     {   
         $response = Auth::onceBasic();
         if (!$response) {
             return $next($request);
         }
         return $this->customErrorResponse->send();
 }

}

最新更新