如何更改Laravel的Auth过滤器的默认重定向URL?

时间:2014-05-20 19:16:59

标签: php laravel laravel-4

在Controller __construct

中使用beforeFilter(以验证用户登录状态)时
$this->beforeFilter('auth', array('except'  => array('login','handleLogin'));

它会自动将访客重定向到

www.example.com/login

如何将重定向网址设置为:

www.example.com/user/login

4 个答案:

答案 0 :(得分:4)

在您的app/filters.php中,您可能会发现以下内容:

Route::filter('auth', function($route, $request)
{
    if (Auth::guest()) return Redirect::guest('login');
});

您需要将return Redirect::guest('login')更改为:

return Redirect::guest('user/login');

答案 1 :(得分:2)

Laravel 5.2

如果您使用的是Laravel 5.2,则需要在Authenticate.php文件夹中打开app/Http/Middleware,然后将guest功能参数更改为您希望将其引导至的路径:

return redirect()->guest('auth/login')

(在清洁安装时写入第24行)

Laravel 5.0

如果您使用的是Laravel 5.0,则需要修改RedirectIfAuthenticated.php文件夹中的Http/Middleware

更改以下行以满足您的需求:

return new RedirectResponse(url('/home'));

例如。对我来说,以下是我想要的:

return new RedirectResponse(url('/'));

答案 2 :(得分:0)

在Laravel 5。*

更改文件的内容 应用程序/ HTTP /中间件/ Authenticate.php

return redirect()->guest('auth/login');

return redirect()->guest('login');

答案 3 :(得分:0)

我也浪费了几分钟的时间。我想将默认登录处理从mysite.com/login移到mysite/admin/login,并在想知道为什么没有解决方案正常工作(我一直被重定向到/ login)后我意识到这是因为这个login.blade.php视图文件中的行(Laravel 5.3):

                <form class="form-horizontal" role="form" method="POST" action="{{ url('/login') }}">

对于开发人员来说,这是一个轻微的疏忽,尽管所有这些有线的聪明,他们仍然愚蠢到将此URL硬编码到视图模板中......这一行应该真正指定&#39; postlogin&#39; Routes.php中的命名路径,即:

                <form class="form-horizontal" role="form" method="POST" action="{{ route('postlogin') }}">

现在,您的表单的操作属性将绑定到您在postlogin中为Routes.php命名路由指定的任何网址,即:

    Route::post('login', ['as' => 'postlogin',  'uses' => 'AuthController@login'         ]);