📜  传递给 App\Exceptions\Handler::unauthenticated() 的参数 2 必须是 App\Exceptions\AuthenticationException 的实例,给出的 Illuminate\Auth\AuthenticationException 实例 - PHP (1)

📅  最后修改于: 2023-12-03 15:06:42.048000             🧑  作者: Mango

介绍

当系统检测到用户未通过身份验证时,Laravel 将在应用程序中抛出一个未经处理的 AuthenticationException 异常。在异常处理程序中,需要将此异常传递给 App\Exceptions\Handler::unauthenticated()。

然而,在某些情况下,可能会出现错误参数类型,如使用 Illuminate\Auth\AuthenticationException 实例时,此时会产生类似于以下错误:

传递给 App\Exceptions\Handler::unauthenticated() 的参数 2 必须是 App\Exceptions\AuthenticationException 的实例,给出的 Illuminate\Auth\AuthenticationException 实例。
解决办法

解决此问题的最简单的方法是确保使用 App\Exceptions\AuthenticationException 实例而不是 Illuminate\Auth\AuthenticationException 实例。

例如,在您的代码中,您可以尝试将代码从下面这个样子:

throw new Illuminate\Auth\AuthenticationException();

改成:

throw new App\Exceptions\AuthenticationException();

这样,即可避免 InvalidArgumentException 异常的产生,请求将会正确处理。

结论

在 Laravel 应用程序中,当未经身份验证的用户尝试访问受保护的页面时,会抛出 AuthenticationException 异常。在应用程序的异常处理程序中,需要将此异常传递给 App\Exceptions\Handler::unauthenticated()。为了避免 InvalidArgumentException 异常的出现,请确保使用 App\Exceptions\AuthenticationException 实例而不是 Illuminate\Auth\AuthenticationException 实例。