如何取回我在accessrules函数中定义的动作
public function accessRules(){
return array(
'allow',
'actions'=>array('create','update' ...),
....
)
}
我需要它们来表示像if(in_array(' create',$ actions))echo CHtml :: link(' link to create form') 或者可能是if(user-> isAutorizedToPerfoem(' create'))。
提前thanx
答案 0 :(得分:3)
我认为使用accessControl过滤器时无法做到这一点。在这种情况下,授权数据直接保存在控制器中,因此从技术上讲,您必须在控制器中才能查看accessRules()。据我所知,你无法手动检查访问权限。过滤器在那里工作。你可以通过调用$ this-> accessRules来查看你的访问规则,但你必须在控制器中。
您可能必须使用RBAC并在外部保存访问规则。请阅读此处以获取更多信息:Yii Documentation - role based access control
还有一个非常强大的Yii扩展名为Rights,它为RBAC提供后端。
目前这似乎有些过分,但RBAC在灵活性方面无与伦比。如果您使用它,则可以检查Yii::app->user->checkAccess('post.create')
等访问权限以及许多其他内容。