有谁知道如何单独登录表单并在两个不同的表上进行身份验证? 我不能用一张桌子和不同的角色...客户要求做单独的表...
我有基于Yii框架登录系统的用户登录系统。但是现在我必须为管理员用户(管理模块)单独做。
答案 0 :(得分:2)
我解决这个问题的方法是从Yii Framework库创建这个插件的两个相同副本:
http://www.yiiframework.com/extension/yii-user/
然后我重构它并将其称为“Customer”并更改了配置,以便它使用不同的表等。
在Yii的配置选项中,我还包括这些选项以保持会话分开(config / main.php):
'components' => array(
...
'user' => array(
// enable cookie-based authentication
'allowAutoLogin' => true,
'loginUrl' => array('/user/login'),
'class' => 'RWebUser', // added - possibly uses the Rights user manager
),
'customer' => array(
// enable cookie-based authentication
'allowAutoLogin' => true,
'loginUrl' => array('/customer/login'),
'stateKeyPrefix' => 'customer',
),
'customerUser' => array(
'class' => 'CWebUser',
'stateKeyPrefix' => 'customer',
'loginUrl' => array('/customer/login'),
),
答案 1 :(得分:1)
您可以向UserIdentity
组件添加一个属性,例如,role。然后更改UserIdentity的authenticate()
方法,以便从与角色对应的帐户表中提取。现在,您需要确保在调用UserIdentity->role
之前设置了UserIdentity->authenticate()
。如果您正在关注yiic webapp
模板,那么这将在SiteController
中。两种非常简单的方法(其中包括):
SiteController
中使用两个视图和两个登录操作方法实现它,每个方法在调用UserIdentity->role
之前适当地设置UserIdentity->authenticate()
。这种方法重复了代码,一旦它工作,你就能看到如何对它进行排序。UserIdentity->role
。