【问题标题】:Yii2 basic template to make separate session for frontend & backendYii2 基本模板为前端和后端创建单独的会话
【发布时间】:2017-03-21 18:38:45
【问题描述】:
我正在使用 Yii2 基本模板来创建管理面板。
对于管理员登录,我使用了 useridentity 类和 yii 的默认用户模型。
现在我必须为前端创建登录。我应该怎么做才能单独登录,以便我可以在前端和后端在同一个浏览器中登录?
在基本模板中,我面临相同身份类别和模型的问题。
我必须为管理员和前端用户使用相同的数据库用户表。
请建议管理此问题的最佳方法。
【问题讨论】:
标签:
php
session
yii2
yii2-basic-app
【解决方案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 模型中扩展常规 User 模型,因为很多属性和功能都是相同的。