我正在使用Yii2基本模板来创建管理面板。
对于管理员登录,我使用了useridentity
类和yii的默认用户模型。
现在我必须为前端创建登录名。如何进行单独登录以便我可以在前端和后端的同一浏览器中登录?
在基本模板中,我遇到了相同身份类和模型的问题。
我必须为admin和前端用户使用相同的数据库用户表。
请建议管理此问题的最佳方式。
答案 0 :(得分:1)
这实际上是正确的方法,并解决这个“问题”是为您的前端和后端声明不同的会话。
Yii2高级模板在库存中包含此功能,我建议您不要再开始发明轮子,只需将项目移动到高级模板。
当然,您可以为管理员创建新模型和新表。但是,这个新类仍然应该实现IdentityInterface
您的AdminUserModel看起来像这样的东西:
namespace app\models;
use yii\db\ActiveRecord;
use yii\web\IdentityInterface
class AdminUser extends ActiveRecord implements IdentityInterface
{
/** Dont froget all the related stuff like behaviours, properties etc **/
/**
* @inheritdoc
*/
public static function tableName()
{
return 'admin_user';
}
public static function findIdentity($id)
{
return static::findOne($id);
}
public static function findIdentityByAccessToken($token, $type = null)
{
return static::findOne(['access_token' => $token]);
}
public function getId()
{
return $this->id;
}
public function getAuthKey()
{
return $this->authKey;
}
public function validateAuthKey($authKey)
{
return $this->authKey === $authKey;
}
}
如果您决定采用这种方式,我甚至建议您在AdminUser模型中扩展常规用户模型,因为很多属性和功能都是相同的。
答案 1 :(得分:0)
我建议使用模块来创建管理面板。