Laravel 4重定向登录页面的问题


Laravel 4 redirect issue with login page

我使用的是laravel 4,这是我的AdminController文件:

class AdminController extends BaseController {

  protected $layout = "admin.layout";
  public function __construct() { 
// security for the forms and access
$this->beforeFilter('csrf', array('on'=>'post'));
$this->beforeFilter('auth.admin' , array('except' =>array('getIndex','postSignin')));
   // using this one to display user value if login and is admin
if (Auth::check() && Auth::user()->isAdmin()){
    $this->user = Auth::getUser();
    View::share('user', $this->user);
   }
    }
   // main admin page
   public function getIndex(){
$this->layout->content = View::make('admin.login');
    }

     // get the dashboard page
    public function getDashboard() {
      $this->layout->content = View::make('admin.dashboard');
     }

     // missing pages all redirect to dashboard if user is logged in.
      public function missingMethod($parameters = array()){
   if (Auth::check() && Auth::user()->isAdmin())
        $this->getDashboard();
   else
        $this->getIndex();
}

这是我的filters.php文件:

Route::filter('auth.admin', function()
 {
    if(!Auth::check() && !(Auth::user()->isAdmin())){
    return Redirect::guest('admin');
}

 });

在我的routes.php文件中,我正在执行以下操作:

 Route::controller('admin', 'AdminController');

如果你能帮我的话,我想要的是:_

1) 。我想清理我的代码,那里没有太多的检查用户是否已登录和isAdmin。

2) 。现在,如果你登录并转到"admin/",它会向你显示登录页面?我怎样才能有效地修复它。

3) 。同样,如果你没有登录,你转到"管理/仪表板",它会向你显示仪表板内容吗?如何修复

提前感谢您的帮助:)

您可以使用路由组并使用单个过滤器来验证它们

检查文档

http://laravel.com/docs/routing#route-组

将其添加到routes.php文件中:

Route::group(array('before' => 'auth.admin'), function() {
    Route::controller('admin', 'AdminController');
})

filters.php文件中声明过滤器:

Route::filter('auth.admin', function(){
    // Assumed you have a '/login' url
    if (Auth::guest() || (Auth::check() && !Auth::user()->isAdmin())) {
        return Redirect::guest('login');
    }
});

此外,请确保您正在使用的User模型中有user()->isAdmin()方法,它会检查用户是否是admin,并返回Boolean值,如果用户是管理员,则返回TRUE,否则返回FALSE