Yii框架:如何设置默认用户角色

4
我可以帮助您进行翻译。以下是您需要翻译的内容:

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

我已添加:

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

要保护/config/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);

感谢您的任何帮助!

在您创建角色、任务等的同一位置 / 在您使用 $auth=Yii::app()->authManager; 的地方。 - T I
问题就是这样... 到目前为止,我只在各种控制器中使用 accessRules 方法来管理授权,现在我想知道在哪里放置更复杂的规则并使用 authManager... - Ingro
你可以将它放在任何有意义的地方,或者为其创建一个名为RbacInit的新脚本(文件),并使用yiic shell运行,或者直接在yiic shell中完成所有操作。 - T I
1个回答

0

通过你开始的代码来完成这个任务会很麻烦。相反,使用专门为此工作创建的Rights扩展。

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


Rights非常有用且易于使用,但许多常用的功能并未记录在文档中。我在这里尝试了一些..http://octathorpeweb.com/blog/2012/03/06/yii-rights-extension-rbac-role-based-access-control/ - Rajat Singhal
谢谢您的建议,Rights 看起来非常好和干净,但我不想在我的项目中使用太多扩展。此外,由于我只需要非常基本的 RBAC 操作,我更愿意自己编写代码,以便更好地控制我的项目 :) - Ingro
通过太多的扩展,你是否也指的是太多的资源?嗯,Yii只加载那些需要满足当前请求的文件,在设置完成后,你的系统只会使用RController和RFilter类。你的系统不会变慢。至少你应该尝试一下,看看效果如何。你可能需要花80个小时来完成这个设置和各种限制。 - Pentium10
这是个好观点。我稍微尝试了一下 Rights,认为它是一个不错的扩展,但对我的需求来说有点“过剩”。实际上,我只是在我的用户架构中添加了一个“角色”列,并使用内置的数据库身份验证管理器在每次用户登录时将其分配给角色。如果我需要更复杂的授权行为,我肯定会使用Rights :D - Ingro

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接