如何在Yii中从数据库获取用户权限

时间:2012-02-09 20:17:56

标签: yii access-rules

我对Yii非常新。我正在开发一个真实世界的例子。 我有一个表,因此是一个名为user的模型,它从数据库中获取数据。数据库中的三个主要字段是用户名,密码和userRole。 用户名和密码工作正常。 我只需要查看数据库中的userRole并根据它,为用户分配一个角色。 例如,用户的userRole字段== 1,用户是admin,可以创建,读取,更新和删除(CRUD)。 但是如果用户的userRole == 2,用户可以更新和创建但不能删除。 我尝试用UserController.php中的'expression'ib accessRules()来做它,但它没有用。 然后我读了它,发现我应该扮演角色。 这就是我写的:

public function accessRules()
    {
        $auth = Yii::app()->authManager;

        $auth->createOperation('createUser','create a user');
        $auth->createOperation('updateUser','update a user');
        $auth->createOperation('deleteUser','delete a user');

        $role=$auth->createRole('creator');
        $role->addChild('createUser');

        $role=$auth->createRole('updater');
        $role->addChild('updateUser');

        $role=$auth->createRole('deleter');
        $role->addChild('deleteUser');


        return array(
................................
        array('allow',
            'actions'=>array('create','update'),
            'users'=>array('@'),
            'roles'=>????,

.....................

???是我不知道该怎么做的地方。 我是否在正确的位置/文件中定义了createOperation / addChild? 如何在返回的数组中使用“角色”? 另外我应该从数据库中获取userRole?

由于Yii论坛不活跃,我正在拼命寻找答案

谢谢

2 个答案:

答案 0 :(得分:0)

操作和角色的创建是一次性活动(无论何时创建或编辑它们)。您需要一个单独的方法,您将调用一次。

如果您希望拥有基于角色的访问系统,则需要向数据库添加其他表。架构可以在文件夹中找到 - yii / framework / web / auth / schema.sql。

但实施RBAC最简单的方法是使用像权利这样的扩展 - http://www.yiiframework.com/extension/rights/

答案 1 :(得分:0)

您必须将角色分配给已登录用户(或已知用户ID)

$auth->assign('creator',user()->id);
$auth->assign('updater', 102); //102 as user id
//...

在accessRules中你必须写

'actions'=>array('create','update'),
'roles'=>array('creator','updater'),

这是你要找的答案吗?