如何将未经授权的用户重定向到Laravel的登录页面


How to redirect an unauthorized user to the login page in Laravel?

我是Laravel(版本3)的新手,我不知道如何在Laravel中设置路由和过滤器,以便任何未经授权的用户试图访问任何url重定向到登录页面(不是404错误),换句话说,未经授权用户的默认主页将是登录页面,对于授权用户来说,它将是仪表板。

如果你使用的是laravel Auth类,你可以创建一个授权路由组。如果用户没有登录,所有在那里定义的路由都将被重定向。你的路由器文件看起来像这样:

Route::get('/', array('as' => 'intro', 'uses' => 'intro@index'));
Route::get( 'login', array('as' => 'login', 'uses' => 'user@login'));
Route::get( 'logout', array('as' => 'logout', 'uses' => 'user@logout'));
// PROTECTED
Route::group(array('before' => 'auth'), function()
{
   Route::get('dashboard', array('as' => 'dashboard', 'uses' => 'user@dashboard'));
});
// AUTH FILTER
Route::filter('auth', function()
{
    if (Auth::guest()) return Redirect::to('login');
});

在路由声明中加入一个before过滤器,就像这样

Route::get('edit_profile', array('before' => 'auth', function()
{
    return View::make('profile.edit');
}));

在Laravel中默认存在Auth过滤器