首页 文章

Yii用户类型与'admin'不同

提问于
浏览
1

使用gii为实体创建CRUD,它在每个控制器中创建一个 accessRules() 函数,如下所示:

public function accessRules()
{
    return array(
        array('allow',
            'actions'=>array('create','update'),
            'users'=>array('@'),
        ),
        array('allow', 
            'actions'=>array('admin','delete'),
            'users'=>array('admin'),
        ),
        array('deny',  // deny all users
            'users'=>array('*'),
        ),
    );
}

这基本上告诉Yii允许 authenticated 用户执行'create'和'update'操作,并允许 admin 用户执行'admin'和'delete'操作 .

在我的应用程序中,还有另一种类型的用户,即 HouseAdmin 用户,在简单的经过身份验证的用户和超级用户之间具有不同的角色 .

在这里的帮助下,我创建了一个isHouseAdmin()函数,它告诉用户是否属于HouseAdmin类型 . 现在,我需要使用该信息使accessRules()与'houseAdmin'用户一起使用,因此我可以制定如下规则:

public function accessRules()
{
    return array(
    array('allow',
        'actions'=>array('index','view'),
        'users'=>array('@'),
        ),
        array('allow',
            'actions'=>array('create','update'),
            'users'=>array('houseAdmin'),
        ),
        array('allow', 
            'actions'=>array('admin','delete'),
            'users'=>array('admin'),
        ),
        array('deny',  // deny all users
            'users'=>array('*'),
        ),
    );
}

我怎么能这样做?那些'admin'和'@'定义在哪里,所以我可以添加'houseAdmin'?

1 回答

  • 0

    adminhouseAdmin 是角色的名称 . 所以应该用键 roles 指定,但不能用 users 指定:

    array('allow',
        'actions' => array('create','update'),
        'roles' => array('houseAdmin'),
    ),
    

    有关详细信息,请阅读this .

相关问题