不会每新增一个角色,我就在每个Controller里加上这个角色吗?
有没有好的方法呢?
不会每新增一个角色,我就在每个Controller里加上这个角色吗?
有没有好的方法呢?
角色和controller没关系啊
下面是controller裡的
public function accessRules()
{
return array(
array('allow', // allow all users to perform 'list' and 'show' actions
'actions'=>array('list','show'),
'users'=>array('*'),
),
array('allow', // allow authenticated user to perform 'create' and 'update' actions
'actions'=>array('create','update'),
'users'=>array('@'),
),
array('allow', // allow admin user to perform 'admin' and 'delete' actions
'actions'=>array('admin','delete'),
'users'=>array('admin'),
),
array('deny', // deny all users
'users'=>array('*'),
),
);
}
这是不是定义 角色是否可以访问 的吗?
users列的是用户id,不是角色。你可以用roles。
你可以考虑定义一个BaseController(所有的controller都继承它),然后把accessRules()定义在这个基类里。
我就是不知道这个accessRules 统一了怎么写哦。。
能给个例子吗?
可以指定某个Controller吗?
有的角色可以访问,有的角色是不能访问的。。。比如A,B两个控制器。。
admin角色可以访问全部,user角色只能访问 A。。
这样的规则怎么实现哦。。
可以,你可以在accessRules里设置controllers, actions参数。
好的,
public function accessRules()
{
/*
* *: 任何用户,包括匿名和验证通过的用户。
* ?: 匿名用户。
* @: 验证通过的用户。
*/
return array(
//拒绝访问,?
array('deny',
'actions'=>array('create','index'),
'users'=>array('?'),
),
array('allow',
'actions'=>array('delete','contact'),
'users'=>array('@'),
//'roles'=>array('admin'),
),
array('deny',
'actions'=>array('delete','contact'),
'users'=>array('*'),
),
);
}
controllers, actions参数加到哪哦。。。
QIANG这个controllers, actions参数加到哪哦。。。
每条rule里,就像users一样。
Quote
return array( //拒绝访问,? array('deny', 'actions'=>array('create','index'), 'users'=>array('?'), 'controller'=>array('site','default'), 'actions'=>array('create','update'),//这里怎么知道是谁的action呢? ),
强,这样吗?
第一次用RBAC,有点搞不懂
对,是这样(你只应该有一个actions)。你这条规则只有符合下述所有条件才被执行:
用户是匿名用户
控制器ID是site或default
action的ID是create或update
你可以用多条rule来做不同的匹配。
但是这样,怎么知道 create 是对应谁的呢?就是对应哪个controller呢?
这种情况是当然是对两个控制器都有效。
请问下,怎么样,只能一个控制器呢。。新手问题多撒。。
多谢
把你的rule拆开:
array('deny', 'controllers'=>array('site'), ...), array('deny', 'controllers'=>array('default'), ...),
谢谢,明白 了。。。
测试成功