对RBAC的疑问,能否配置好了就生效

if(Yii::app()->user->checkAccess(‘createPost’))

{

// 创建发布

}

按 文档 中说,角色权限设置好了还需要在指定的控制里加这样的判断,请问下,有没有其他解决方案,

不要在每个里面写样的的呢? :D

个人觉得可能没有。。

只是问一下。。。

呵呵

先感谢qiang

<_<

期待qiang 回复 :D

使用beforeAction()啊

beforeAction 里怎么得到这个action的名称呢?

原来这里面可以得到值 。。

谢了。。

RBAC里的operation和MVC里的action在有些情况下是一一对应的。所以你可以考虑在beforeAction()里根据action名字调用checkAccess。

更普遍的情况下,你需要根据需要调用checkAccess(比如判断某些菜单选项是否可见,或者operation的粒度小于action)。

如果operation的粒度小于action,那势必我们需要在action中去检查访问控制了?

相反如果在beforeAction中检查operation的访问控制,如果没有这个权限去操作,势必会阻止对action就行进一步的操作(如果不阻止往下操作,那放在deforeAction之中似乎就没有意义了),但一旦阻止了action,这又跟"operation的粒度小于action"这一条件矛盾?

你举的例子 不能反映出 粒度小于action。实际上 operation和action是没关系的。

例如site/menu是菜单的action。而菜单里面可以操作的菜单项,需要operation来判断。这时候是不是 operation小于了action?