如果您不想使用其中一个注释中建议的复杂RBAC设置,则可以在配置2个不同的用户组件时实现此目的stateKeyPrefix:
'user' => array( // Webuser for the frontend
'class' => 'CWebUser',
'loginUrl' => array('site/login'),
'stateKeyPrefix' => 'frontend_',
),
'adminUser' => array( // Webuser for the admin area (admin)
'class' => 'CWebUser',
'loginUrl' => array('/admin/site/login'),
'stateKeyPrefix' => 'admin_',
),
Run Code Online (Sandbox Code Playgroud)
所以现在你有2个独立的用户组件:user和adminUser.您必须创建另一个AdminLoginForm并AdminUserIdentity使用它/admin/site/login来进行身份验证.这应该是直截了当的.
虽然您仍然遇到问题,但您无法accessRules在管理模块中轻松定义,因为它会使用该user组件执行授权检查,而您希望它使用该adminUser组件.要解决此问题,您可以在以下方式中更改组件配置AdminModule:
class AdminModule extends CWebModule
{
public function beforeControllerAction($controller, $action)
{
if(parent::beforeControllerAction($controller,$action))
{
// Make 'adminUser' the main user in this module.
// Frontend user is available as 'Yii::app()->frontendUser'.
Yii::app()->setComponent('frontendUser', Yii::app()->user);
Yii::app()->setComponent('user', Yii::app()->adminUser);
return true;
}
else
return false;
}
}
Run Code Online (Sandbox Code Playgroud)
现在,您可以使用不同的用户群进行身份验证,登录到站点的2个不同部分.
| 归档时间: |
|
| 查看次数: |
2219 次 |
| 最近记录: |