Php Yii2高级-使后端使用';管理员';表和';管理员';模型
我正在尝试像传统的用户/管理系统一样设置Yi2 advanced。前端将是/user,后端将是/admin,并将使用数据库中各自的表(user和admin)。我还没有将前端和后端重命名为用户和管理员 使用migrate生成“user”表及其所有字段。我注册创建了一个新用户,一切都很完美。然后我复制了“user”表并将其命名为“admin”,并将用户名改为admin。我可以更改密码,或者截断密码,注册新的管理员用户,然后稍后从后端删除注册。db中的admin表本身并不是问题所在,因为当我遇到错误时,我并没有走得太远 我已经在它的前端(用户)设置并使用了Yi2 advanced。当然,您有Yii::$app->user,它在前端工作正常。我可以登录,它使用“用户”表。前端工程伟大 现在在后端(admin),我需要它来使用“admin”表。我知道您指定了要在模型中使用的表。我复制了/common/models/User.php和/common/models/Admin.php,并更新了函数以使用“Admin”表 我还复制了/vendor/yiisoft/yii2/web/User.php并将其放在/common/models/web/Admin.php中(并将类的名称从User重命名为Admin) 然后我编辑了/backend/config/main.php以反映对Admin(class和identityClass)的更改Php Yii2高级-使后端使用';管理员';表和';管理员';模型,php,yii2,yii2-advanced-app,Php,Yii2,Yii2 Advanced App,我正在尝试像传统的用户/管理系统一样设置Yi2 advanced。前端将是/user,后端将是/admin,并将使用数据库中各自的表(user和admin)。我还没有将前端和后端重命名为用户和管理员 使用migrate生成“user”表及其所有字段。我注册创建了一个新用户,一切都很完美。然后我复制了“user”表并将其命名为“admin”,并将用户名改为admin。我可以更改密码,或者截断密码,注册新的管理员用户,然后稍后从后端删除注册。db中的admin表本身并不是问题所在,因为当我遇到错误时
/backend/config/main.php
'components' => [
'admin' => [
'identityClass' => 'common\models\Admin',
'class' => 'common\models\web\Admin',
'enableAutoLogin' => true,
],
],
class Admin extends Component { ... }
class Admin extends ActiveRecord implements IdentityInterface {
public static function tableName()
{
return '{{%admin}}';
}
}
/common/models/web/Admin.php
'components' => [
'admin' => [
'identityClass' => 'common\models\Admin',
'class' => 'common\models\web\Admin',
'enableAutoLogin' => true,
],
],
class Admin extends Component { ... }
class Admin extends ActiveRecord implements IdentityInterface {
public static function tableName()
{
return '{{%admin}}';
}
}
/common/models/Admin.php
'components' => [
'admin' => [
'identityClass' => 'common\models\Admin',
'class' => 'common\models\web\Admin',
'enableAutoLogin' => true,
],
],
class Admin extends Component { ... }
class Admin extends ActiveRecord implements IdentityInterface {
public static function tableName()
{
return '{{%admin}}';
}
}
错误:必须设置User::identityClass。
我已解决此问题:)
您必须编辑每个组件(前端和后端)的主配置,为用户组件指定“identityClass”,并将“session”和“request”添加到列表中
前端配置示例:
'components' => [
'user' => [
'identityClass' => 'common\models\User',
'enableAutoLogin' => true,
'identityCookie' => [
'name' => '_frontendUser', // unique for frontend
]
],
'session' => [
'name' => 'PHPFRONTSESSID',
'savePath' => sys_get_temp_dir(),
],
'request' => [
// !!! insert a secret key in the following (if it is empty) - this is required by cookie validation
'cookieValidationKey' => '[RANDOM KEY HERE]',
'csrfParam' => '_frontendCSRF',
],
],
'components' => [
'user' => [
'identityClass' => 'common\models\Admin',
'enableAutoLogin' => true,
'identityCookie' => [
'name' => '_backendUser', // unique for backend
]
],
'session' => [
'name' => 'PHPBACKSESSID',
'savePath' => sys_get_temp_dir(),
],
'request' => [
// !!! insert a secret key in the following (if it is empty) - this is required by cookie validation
'cookieValidationKey' => '[DIFFERENT UNIQUE KEY]',
'csrfParam' => '_backendCSRF',
],
],
后端配置示例:
'components' => [
'user' => [
'identityClass' => 'common\models\User',
'enableAutoLogin' => true,
'identityCookie' => [
'name' => '_frontendUser', // unique for frontend
]
],
'session' => [
'name' => 'PHPFRONTSESSID',
'savePath' => sys_get_temp_dir(),
],
'request' => [
// !!! insert a secret key in the following (if it is empty) - this is required by cookie validation
'cookieValidationKey' => '[RANDOM KEY HERE]',
'csrfParam' => '_frontendCSRF',
],
],
'components' => [
'user' => [
'identityClass' => 'common\models\Admin',
'enableAutoLogin' => true,
'identityCookie' => [
'name' => '_backendUser', // unique for backend
]
],
'session' => [
'name' => 'PHPBACKSESSID',
'savePath' => sys_get_temp_dir(),
],
'request' => [
// !!! insert a secret key in the following (if it is empty) - this is required by cookie validation
'cookieValidationKey' => '[DIFFERENT UNIQUE KEY]',
'csrfParam' => '_backendCSRF',
],
],
有关更详细的指南,您可以阅读我创建的wiki
维基: