如果操作在允许列表中,请签入模板



我不想检查用户是否登录——通常情况下是这样。我想检查当前视图是否在控制器中设置的允许列表中。

$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);

最新更新