我不想检查用户是否登录——通常情况下是这样。我想检查当前视图是否在控制器中设置的允许列表中。
$this->Auth->allow('testresults', 'testlist' , 'detaillist',
如何确定是否允许操作?
使用此选项进行检查。
$action = $this->request->params['action'];
if(in_array($action, ['testresults', 'testlist', ''])){
return true;
}
在任何地方使用此代码都可以查看允许的操作:
debug(AuthComponent::$allowedActions);exit;
将信息传递到视图
允许的操作存储在公共属性中,因此在控制器代码中,您可以执行以下操作:
$allowed = $this->Auth->allowedActions;
$this->set('allowedActions', $allowed);
然后简单地在视图中期望该数组。
原则上,视图模板不应该要求提供信息——它们只应该根据收到的信息采取行动。
目前提出了混合代码解决方案。。在前置过滤器中。。
$this->Auth->allow('index', 'page1','page2'..);
$pagepermission = 'private';
$allowed = $this->Auth->allowedActions;
$action = $this->request->params['action'];
if(in_array($action, $allowed)){
$pagepermission = 'public';
}
$this->set('pagepermission',$pagepermission);