Laravel 5.3 unauthorized()AuthenticationException致命错误

时间:2016-12-10 16:31:02

标签: php laravel authentication exception upgrade

我已关注Laravel 5.3 upgrade guide,即在unauthenticated中添加App\Exceptions\Handler方法。

但是,当Auth系统调用它时,我收到以下错误:

  

Handler.php第59行中的FatalThrowableError:       类型错误:传递给App \ Exceptions \ Handler :: unauthenticated()的参数2必须是App \ Exceptions \ AuthenticationException的实例,给出Illuminate \ Auth \ AuthenticationException的实例,在/ Users / Username / Development / ProjectName / vendor /中调用第135行的laravel / framework / src / Illuminate / Foundation / Exceptions / Handler.php

我一直在寻找最后半小时但找不到解决方案。

任何帮助?

3 个答案:

答案 0 :(得分:2)

检查Handler.php文件与5.3分支版本的比较:https://github.com/laravel/laravel/blob/5.3/app/Exceptions/Handler.php

请注意Handler.php中的unauthenticated()方法需要\Illuminate\Auth\AuthenticationException的实例。确保use Illuminate\Auth\AuthenticationException;包含在文件顶部。

答案 1 :(得分:0)

就我而言,我只是删除了糟糕...或恢复默认的Handler.php

答案 2 :(得分:0)

我在从 Laravel 5.2 升级到 5.3 时遇到了这个 Error 500 莫名其妙的问题。 storage/logs 中没有 laravel 错误日志,也没有 Apache 错误日志。 .env 没有问题,调试已打开,没有损坏的 .htaccess 指令,此外 php artisan 无法运行。尝试了一切,直到我查看 PHP 错误日志并发现:

PHP Fatal error:  Uncaught Error: Undefined constant 'Illuminate\Auth\AuthenticationException' in C:\code\laravel-project\vendor\laravel\framework\src\Illuminate\Container\Container.php:79

所以我按照@jon 的建议做了,并将我的 Handler.php 文件与新的 laravel 文件进行了比较,发现了这一点:

在您的 App/Exceptions/Handler.php 中,确保 $dontreport 数组中的类被引用为引号中的任一字符串:

        '\Illuminate\Auth\AuthenticationException',
        '\Illuminate\Auth\Access\AuthorizationException',
        '\Symfony\Component\HttpKernel\Exception\HttpException',
        '\Illuminate\Database\Eloquent\ModelNotFoundException',
        '\Illuminate\Session\TokenMismatchException',
        '\Illuminate\Validation\ValidationException',

或者这样:

        \Illuminate\Auth\AuthenticationException::class,
        \Illuminate\Auth\Access\AuthorizationException::class,
        \Symfony\Component\HttpKernel\Exception\HttpException::class,
        \Illuminate\Database\Eloquent\ModelNotFoundException::class,
        \Illuminate\Session\TokenMismatchException::class,
        \Illuminate\Validation\ValidationException::class,

出于某种原因,我发现我的没有去掉 Error 500 的引号和修正。