我今天刚开始学习Laravel框架。
我想全局检查用户的会话。我在基类的构造函数中放了一个过滤器,如下所示。
class Base_Controller extends Controller {
public function __construct() {
parent::__construct();
$this->filter('before', 'auth')->except(array('login@index'));
}
}
除了有一个问题外,它工作正常。我想忽略登录控制器的auth过滤器。我该怎么做?
我试过
除(array(“login”)),除(array(“login.index))和除(array(”login @ index) “))。他们都没有工作
答案 0 :(得分:2)
在控制器中使用$this->filter()
有一种不同的方法,可以在routes.php
文件中执行此操作。当您在控制器中使用它时,except()
将只接受该控制器的方法。
您可以解决问题,创建一个新的控制器,该控制器从Base_Controller
延伸,如Base_Auth_Controller
,用于检查身份验证过滤器。如果您检测到控制器是“Auth”(提示:Route::filter('before', function(){});
),您可以使用return;
,然后只使用Request::route()->controller
但是您无法排除controller@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'));
}
}