我在我的网络应用程序中使用 laravel,在 routes.php 中我有:
// admin routes
Route::group(array('before' => 'auth'), function()
{
Route::controller('admin', 'UsersController');
});
我想保护并检查此人是否已登录,但此代码总是重定向到“/login”我希望它重定向到“admin/login”,可以这样做吗?
最佳答案
在filters.php
文件中有一个默认的auth
过滤器,应该是这样的:
Route::filter('auth', function($route, $request)
{
if (Auth::guest()) return Redirect::guest('login'); // /login url
});
此过滤器(上面给出)将检查用户是否未登录,然后将发生重定向,用户将被发送到 /login
url
否则什么都不会发生时,用户将被发送到请求的页面。
此外,默认情况下,下面的filter
是可用的,这个filter
只是检查用户是否已经登录然后他将被重定向到/
(主页)默认:
Route::filter('guest', function($route)
{
if (Auth::check()) return Redirect::to('/'); // you may change it to /admin or so
});
此 (guest
) 过滤器与 /login
一起使用,如下所示,因此如果登录用户打算登录,则该用户将被重定向到主页默认情况下:
Route::get('login', array('before' => 'guest', 'uses' => 'UsersController@getLogin'));
现在,在您的 routes.php
文件中,您声明了以下路由:
Route::group(array('before' => 'auth'), function()
{
Route::controller('admin', 'UsersController');
});
如果一切正常,那么此设置应该可以正常工作。如果注销的用户尝试访问 admin
,那么用户将被发送到 login
,这些在默认情况下可用并且应该可以工作。
关于php - Laravel 4 Auth 总是重定向到登录页面?/login,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22948948/