FatalThrowableError 调用未定义的方法 App\Exceptions\Handler::unauthenticated() laravel 5.4

FatalThrowableError Call to undefined method App\Exceptions\Handler::unauthenticated() laravel 5.4

我遇到的问题是,当我的用户未登录并且我转到需要对我的博客进行身份验证的路由时,它会抛出异常:“

Call to undefined method App\Exceptions\Handler::unauthenticated()

” 虽然我在目录

中没有名为unauthenticated()的方法

App\Exceptions\Handler.

我想在 he/she 单击需要身份验证的路由时为我的用户显示登录表单,该怎么做?

框架自身抛出的未认证异常

如果你在路由上有 auth 中间件,它应该将你重定向到登录页面 Route::get('/test', 'TestController@show')->middleware('auth');

有关详细信息,请参阅 docs

在您的 App\Exceptions\Handler 文件中,添加一个未验证的函数,Laravel 将识别它并执行您在此处定义的内容。

您可以添加这个功能:

public function unauthenticated($request, AuthenticationException $exception)
    {
        return ''; // use redirect('/login') or something if you want to redirect to login.
    }

尽管如果您使用 php artisan make:auth,Laravel 会自动将未经身份验证的页面设置为登录页面。所以不知道你是否使用过这个,也许你在标准 Laravel 代码中更改了其他内容。

希望以上功能对您有所帮助。

发生这种情况是因为错误处理程序以某种方式缺少未经身份验证的函数。

转到 App\Exceptions\Handler.php 文件并添加以下函数。

<?php        
    protected function unauthenticated($request, AuthenticationException $exception)
    {
        if ($request->expectsJson()) {
            return response()->json(['error' => 'Unauthenticated.'], 401);
        }
        return redirect()->guest('login');
    }

guest('login') 更改为您想要的位置。

您可以像这样在 class 中使用它:

Illuminate\Auth\AuthenticationException as AuthenticationException;