我遇到的问题是,当我的用户未登录并转到需要对我的博客进行身份验证的路由时,它将引发异常:“
调用未定义方法App \ Exceptions \ Handler :: unauthenticated()
”
虽然我在目录中没有名为unauthenticated()
的方法
App \ Exceptions \ Handler。
当用户单击需要身份验证的路由时,我想为用户显示登录表单,该怎么做?
答案 0 :(得分:0)
框架本身抛出的未经身份验证的异常。
如果您在该路由上具有身份验证中间件,则它应将您重定向到登录页面Route::get('/test', 'TestController@show')->middleware('auth');
有关更多信息,请参见docs。
答案 1 :(得分:0)
在您的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代码中的其他内容。
希望以上功能对您有所帮助。
答案 2 :(得分:0)
发生这种情况是因为错误处理程序中缺少未经身份验证的功能。
转到 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')
更改为您想要的位置。
您可以在此类中使用它:
Illuminate\Auth\AuthenticationException as AuthenticationException;