首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >rbac yii授权

rbac yii授权
EN

Stack Overflow用户
提问于 2014-04-06 02:24:30
回答 1查看 147关注 0票数 1

我试图理解rbac中的授权,并对一些事情感到困惑。

在accessControl规则中,我使用的角色如下:

代码语言:javascript
复制
return array(
                    array('allow',  // allow all users to perform 'index' and 'view' actions
                            'actions'=>array('index', 'view'),
                            'roles'=>array('user'),
                    ),
                    array('allow', // allow authenticated user to perform 'create' and 'update' actions
                            'actions'=>array('create','update'),
                            'roles'=>array('author'),
                    ),
                    array('allow', // allow admin user to perform 'admin' and 'delete' actions
                            'actions'=>array('admin','delete'),
                             'roles'=>array('admin'),
                    ),
                    array('deny',  // deny all users
                            'users'=>array('*'),
                    ),
            );

我还使用了以下设置:

代码语言:javascript
复制
    $auth = Yii::app()->authManager;

    $auth->createOperation('createPost', 'create a post');
    $auth->createOperation('readPost', 'Read a post');
    $auth->createOperation('updatePost', 'update a post');
    $auth->createOperation('deletePost', 'delete a post');        


    $role = $auth->createRole('user');
    $role->addChild('readPost');

    $role = $auth->createRole('author');
    $role->addChild('user');
    $role->addChild('createPost');

    $role = $auth->createRole('admin');
    $role->addChild('author');
    $role->addChild('updatePost');
    $role->addChild('deletePost');


    $auth->assign('user', 3);
    $auth->assign('author', 2);
    $auth->assign('admin', 1);

    $auth->save();

有4种不同的名称操作(createPost、deletePost、readPost、udpatePost)。然而,在控制器中,动作名是不同的,例如actionIndex、actionView、actionCreate、actionDelete、actionUpdate和actionAdmin。

问题:

如何将操作映射到控制器操作。

是否应该创建更多的操作,如IndexPost、ViewPost等?

在使用rbac时,我们是否应该像我在这里所做的那样保留访问控制过滤器和规则?

我不确定我做得对不对。很多困惑和迷失。请放点光。干杯。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-04-06 05:36:34

  1. 它们没有被映射,在每个操作中都需要手动检查 若(Yii::app()->authManager->checkAccess('updatePost'))提出了新的HttpException(404);
  2. 如果某些用户看不到这些操作,您可以创建IndexPost,ViewPost。
  3. 在accessControl中,您只能在需要时检查用户是否已被记录。
  4. 有关更多信息,请参阅本文:简单RBAC理解层次式RBAC方案
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22889282

复制
相关文章

相似问题

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