2012-07-08 78 views
3

我已阅读Yii关于“基于角色的访问控制”的文档,但我没有找到配置默认用户角色的位置。Yii框架:如何设置默认用户角色

我已经添加:

'authManager'=>array(
     'class'=>'CDbAuthManager', 
     'connectionID'=>'db', 
     'defaultRoles'=>array('guest', 'authenticated', 'admin'), 
), 

到保护/配置/ main.php

但在那里我把这些业务规则?

$bizRule='return !Yii::app()->user->isGuest;'; 
$auth->createRole('authenticated', 'authenticated user', $bizRule); 

$bizRule='return Yii::app()->user->isGuest;'; 
$auth->createRole('guest', 'guest user', $bizRule); 

$bizRule='return Yii::app()->user->admin;'; 
$auth->createRole('admin', 'admin user', $bizRule); 

感谢您的帮助!

+0

在同一个地方你创建了你的角色,任务等/你有'$ auth = Yii :: app() - > authManager;' – 2012-07-08 11:38:02

+0

那么问题就是这样...直到现在我只用了' accessRules'方法来管理授权,现在我想知道在哪里放置更复杂的规则并使用authManager ... – Ingro 2012-07-08 11:47:59

+0

以及你可以将它放在任何有意义的地方,也许可以创建一个新的脚本(文件)它叫RbacInit什么的,用yiic shell来运行,或者只是在yiic shell里做这一切, – 2012-07-08 12:02:52

回答

1

通过你开始的代码做到这一点将是一个痛苦。请使用为此作业创建的Rights扩展。

Rights扩展利用Yii的内置数据库授权管理器(CDbAuthManager)为高级访问控制提供Web界面。

+0

权限是非常有用和易于使用的,但是很多时候需要权限的特性都没有记录..我在这里试了一下.. http://octathorpeweb.com/blog/2012/03/06/yii-rights-extension-rbac-role-based-access-control/ – 2012-07-08 17:05:47

+0

感谢您的建议,权利似乎非常好,干净,但我不想在我的项目中使用太多的扩展。另外,由于我需要非常基本的RBAC操作,我宁愿自己编写代码,以便对我的项目有更多的控制:) – Ingro 2012-07-08 19:29:18

+0

由于太多的扩展,你是否也指太多的资源?那么Yii只加载那些需要满足当前请求的文件,并且在你设置你的系统后,只有RController和RFilter类才会被使用。你的系统不会很慢。至少你应该尝试一下,看看它做得如何。您可能最终编程80小时以完成此设置并完成所有类型的限制。 – Pentium10 2012-07-08 21:12:40