2

我今天刚开始学习 Laravel 框架。

我想在全球范围内检查用户的会话。我在基类的构造函数中放置了一个过滤器,如下所示。

class Base_Controller extends Controller {

    public function __construct() {

        parent::__construct();

        $this->filter('before', 'auth')->except(array('login@index'));

    }

}

它工作正常,除了有一个问题。我想忽略登录控制器的身份验证过滤器。我怎么做?

我试过

except(array("login"))except(array("login.index))except(array("login@index"))。他们都没有工作

4

1 回答 1

2

$this->filter()在控制器中使用与在routes.php文件中使用不同的方法。当您在控制器中使用它时,except()将只接受该控制器的方法。

您可以解决您的问题,创建一个从Base_Controller类似Base_Auth_Controller检查 auth 过滤器的扩展的新控制器。如果您检测到控制器是“Auth”(提示:),您可能可以使用Route::filter('before', function(){});and ,但您不能绝对排除.return;Request::route()->controllercontroller@action

或执行以下操作:

public function __construct() {

    parent::__construct();

    // you should check what exactly returns, I don't remember actually
    if(Request::route()->controller != 'Auth_Controller')
    {
         $this->filter('before', 'auth')->except(array('login@index'));
    }

}
于 2012-10-05T01:16:37.177 回答