【问题标题】:How to get user permission from a database in YiiYii如何从数据库中获取用户权限
【发布时间】:2012-03-02 08:26:09
【问题描述】:

我对 Yii 非常陌生。我正在开发一个真实世界的例子。 我有一个表,因此有一个模型,称为用户,它从数据库中获取数据。数据库中的三个主要字段是用户名、密码和用户角色。 用户名和密码工作得很好。 我只需要查看数据库中的 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 论坛不活跃,我正在拼命寻找答案

谢谢

【问题讨论】:

    标签: yii access-rules


    【解决方案1】:

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

    如果您想建立一个基于角色的访问系统,您需要在数据库中添加额外的表。架构可以在文件夹中找到 - yii/framework/web/auth/schema.sql。

    但实现 RBAC 的最简单方法是使用诸如 Rights 之类的扩展 - http://www.yiiframework.com/extension/rights/

    【讨论】:

      【解决方案2】:

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

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

      在 accessRules 中你必须写

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

      这是您正在寻找的答案吗?

      【讨论】:

        猜你喜欢
        • 2020-10-05
        • 2011-07-06
        • 2013-07-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多