2013-02-05 82 views
0

我正在为Laravel应用程序实现一些访问控制逻辑。如果用户无权查看该资源,我想重定向到“未经授权”页面。来自父控制器的重定向

我使用控制器/法逻辑我的网址。我可以从被调用的控制器/方法重定向,但为了使我的代码更具可伸缩性,我想检查父控制器中的ACL逻辑,可能是Base_controller,然后从URI中重定向,在URI之前控制器/方法被访问。

我试图重定向添加到结构,或致电在重定向结构的另一种方法,都无济于事。

所以,我想知道如果这是可能的,因为“重定向到::”似乎只能在URL中指定的控制器/法工作,并在其他地方 - 是正确的?

回答

5

你需要“回归”的重定向。你可以从任何地方这样做:

return Redirect::to('login') 

但是,你应该在过滤器运行逻辑:

public function __construct() 
{ 
    $this->beforeFilter('acl'); 
} 

然后在filters.php

Route::filter('acl', function() 
{ 
    if ($something) 
    { 
      return Redirect::to('somewhere'); 
    } 
}); 
+0

回报重定向到::( '登录')似乎不能在任何地方工作。我在__construct()中测试了一个控制器,但没有重定向。 – seavers

+0

是'登录'一个有效的uri?如果不是,则可能必须重定向到相应的命名路由。请注意,您必须先使用Redirect类创建路由。例如,您可以创建一个命名路由loginPage,然后执行命名重定向,如Redirect :: route('loginPage') – Juan