Laravel 4 Auth重定向总是登录页面?/登录

use*_*060 6 php laravel-4

我正在使用laravel用于我的web应用程序和routes.php我有:

// admin routes
Route::group(array('before' => 'auth'), function()
{
Route::controller('admin', 'UsersController');
});
Run Code Online (Sandbox Code Playgroud)

我想保护并检查此人是否已登录,但此代码始终重定向到"/ login"我希望它重定向到"admin/login",这可以完成吗?

The*_*pha 13

文件中有一个默认auth过滤器filters.php,它应该是这样的:

Route::filter('auth', function($route, $request)
{
    if (Auth::guest()) return Redirect::guest('login'); // /login url
});
Run Code Online (Sandbox Code Playgroud)

此过滤器(如上所述)将检查用户是否未登录,然后将发生重定向并且将发送用户/login url,否则将不会发生任何事情,用户将被发送到所请求的页面.

此外,filter默认情况下可以使用以下内容,这filter只是检查用户是否已登录,然后/默认情况下将重定向到(主页):

Route::filter('guest', function($route)
{
    if (Auth::check()) return Redirect::to('/'); // you may change it to /admin or so
});
Run Code Online (Sandbox Code Playgroud)

此(guest)过滤器与/login下面给出的一起使用,因此如果登录用户打算登录,则默认情况下用户将被重定向到主页:

Route::get('login', array('before' => 'guest', 'uses' => 'UsersController@getLogin'));
Run Code Online (Sandbox Code Playgroud)

现在,在您的routes.php文件中,您声明了以下路由:

Route::group(array('before' => 'auth'), function()
{
    Route::controller('admin', 'UsersController');
});
Run Code Online (Sandbox Code Playgroud)

如果一切都很好,那么这个设置应该有效.如果已注销的用户尝试访问,admin则将发送用户login,默认情况下这些用户可以使用.


小智 0

是的。添加以下过滤器:

Route::filter('auth.admin', function()
{
    if (Auth::guest()) return Redirect::guest('admin/login');
});
Run Code Online (Sandbox Code Playgroud)

auth我复制了Laravel 提供的原始过滤器。

接下来,使用新的过滤器:

Route::group(array('before' => 'auth.admin'), function()
{
Route::controller('admin', 'UsersController');
});
Run Code Online (Sandbox Code Playgroud)