首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >“where子句”中的Cakehp Acl“”Aro0.foreignKey“”

“where子句”中的Cakehp Acl“”Aro0.foreignKey“”
EN

Stack Overflow用户
提问于 2014-10-29 03:27:33
回答 1查看 184关注 0票数 0

我对cakePhp 2.5.x中的Acl有问题。我已经做了cakephp食谱告诉我的一切,但我仍然有一个问题。

因此,我将我的应用程序设置为有3个组。管理员、经理和用户,就像在食谱中一样。此时,我的应用程序只有1个用户,此用户属于管理员。管理员可以执行任何操作。

这是我的AppController代码:

代码语言:javascript
复制
class AppController extends Controller {

public $components = array(
        'Acl',
        'Session',
        'Auth' => array(
            'loginRedirect'  => array(
                'controller' => 'users',
                'action'     => 'index'
                ),
            'logoutRedirect' => array(
                'controller' => 'users',
                'action'     => 'login'
                ),
            'authenticate' => array(
                'Form'      => array(
                        'passwordHasher' => 'Blowfish'
                    )

                ),
            'authorize' => array(
                'Actions' => array('actionPath'=>'controllers'),
                ),

            )
    );

public function beforeFilter(){
    //not thinked yet
    parent::beforeFilter();
    //$this->initDB();
}

public function initDB(){
    $group = $this->User->MemberOf;
    // Allow admins to everything 
    $group->id = 1; 
    $this->Acl->allow($group, 'controllers');

}

}

和UsersController

类UsersController扩展了AppController{

代码语言:javascript
复制
public $helpers     = array('Html','Form');
public $uses        = array("User","Group");

// callbacks
public function beforeFilter(){
    parent::beforeFilter();

问题是,当我(管理员,并且我已经登录)想要调用UsersController cakephp的'add‘操作时,会出现以下错误:

代码语言:javascript
复制
Database Error

错误: SQLSTATE42S22:找不到列: 1054“where子句”中的未知列“”Aro0.foreignKey“”

SQL查询: SELECT Aro.idAro.parent_idAro.modelAro.foreign_keyAro。来自dotcorealiasaros AS Aro INNER JOIN dotcorearos AS Aro0 ON (Aro。D20 <= D21。D22和D23。D24D25。D26) WHERE D27。D28= 'Group‘AND Aro0。D30= '1’ORDER BY D31。lft DESC )WHERED27=‘Group’AND Aro0foreignKey=‘1’ORDER BYArolftDESC)WHEREAro0=‘aros’ANDAro0foreignKey=‘1’ORDER BY BYArolftDSCD32

注意:如果要自定义此错误消息,请创建app\View\Errors\pdo_error.ctp

我知道在aros表中没有foreignKey字段,但是foreign_key,但是为什么cakephp在where子句中使用foreignKey?

请帮我解决这个问题,我找不到任何关于这个问题的帖子/问题,所以我在这里问这个问题。我真的很感谢你的回复。谢谢

EN

回答 1

Stack Overflow用户

发布于 2014-11-13 18:42:57

aro中的外键用于与组和用户表关联。

根据aro中的模型列值,foreign_key的处理方式不同

示例:模型=组:则foreign_key与groups表相关联。foreign_key = User :则用户与users表相关联。

组:

代码语言:javascript
复制
id    name
1     Administrator
2     Manager
3     User

上面的列'id‘在aro中被视为外键,但提到了Model=Group。如果在aro中使用‘Model=’,那么外键将是用户id。

用于按foreign_key检查权限的ACL列

示例:

代码语言:javascript
复制
$this->ACL->check('Group.1',$aco) 

以上方法检查aco上的管理员权限。

代码语言:javascript
复制
$this->ACL->check('User.1',$aco) 

上述方法检查id为1的用户在aco上的权限。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26616866

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档