在Laravel 5.4中更改未经身份验证的用户的默认行为

时间:2017-07-26 08:37:34

标签: laravel laravel-5

我想更改为当他们尝试访问要求用户登录的页面时要重定向的未登录用户的位置。

我在Exceptions/Handler.php尝试过像这样改变它

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

    return redirect()->guest(route('/users/login'));
}

但是当我尝试访问这样的页面时,我遇到了错误

  

InvalidArgumentException Route [/ users / login]未定义。

我在web.php中的路线是

Route::get ('/users/login', ['uses' => 'UsersController@getLoginPage', 'before' => 'guest']);

如果我放置房屋/

,也是一样的
  

路线[/]未定义。

这是应该做的正确的地方吗?

2 个答案:

答案 0 :(得分:2)

您必须提供路线名称而不是网址, 在数组内部执行此操作:

Route::get ('/users/login', ['uses' => 'UsersController@getLoginPage', 'before' => 'guest', 'as' => 'user.login']);

并称之为:

return redirect()->guest(route('user.login'));

答案 1 :(得分:0)

要使用route()帮助程序呼叫您的登录路线,您必须为路线命名。

Route::get ('/users/login', ['uses' => 'UsersController@getLoginPage', 'before' => 'guest'])->name('users.login');

所以你可以做到

    return redirect()->guest(route('users.login'));