我正在使用Laravel 5.5,并试图实现用户和管理员的多重身份验证。当我试图在浏览器中调用管理员登录表单时,我得到了这个错误。
错误:
应用程序\异常\处理程序::未认证($request,应用程序\异常\认证异常$exception)的声明应与照明\基础\异常\处理程序::未认证($request,照明\授权\认证异常$exception)兼容
下面是我在app/Exceptions/Handler
中的未验证函数:
protected function unauthenticated($request, AuthenticationException $exception)
{
if ($request->expectsJson()) {
return response()->json(['error' => 'Unauthenticated.'], 401);
}
$guard = array_get($exception->guards(), 0);
switch ($guard) {
case 'admin':
$login = 'admin.login';
break;
default:
$login = 'login';
break;
}
return redirect()->guest(route($login));
}
请帮助我解决这个问题。
4条答案
按热度按时间4zcjmb1e1#
您忘记在文件顶部添加
use Illuminate\Auth\AuthenticationException
fzsnzjdm2#
我正在使用Laravel 7.X
我更喜欢在Authenticate中间件中执行此操作
我做得很像贝娄,它对我很有效。
xxhby3vn3#
感谢您最近的答复Thanh Nguyen。我的自定义认证中间件是最新版本的工作
以前在Handler.php中使用未经身份验证的函数来替换父函数。
两者都正常工作,但最新版本的array_get在获取我们使用的保护时可能存在问题:
对于任何面临此问题的用户,Laravel 7.* 及更高版本已弃用此方法
iyfjxgzm4#
处理程序类错误-Laravel
公共函数句柄($request,闭包$next)
带有公共函数句柄($request,闭包$next,... $auth)