Yii2基本模板,用于为前端和前端单独创建会话后端

时间:2017-03-21 18:38:45

标签: php session yii2 yii2-basic-app

我正在使用Yii2基本模板来创建管理面板。 对于管理员登录,我使用了useridentity类和yii的默认用户模型。

现在我必须为前端创建登录名。如何进行单独登录以便我可以在前端和后端的同一浏览器中登录?

在基本模板中,我遇到了相同身份类和模型的问题。

我必须为admin和前端用户使用相同的数据库用户表。

请建议管理此问题的最佳方式。

2 个答案:

答案 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)

我建议使用模块来创建管理面板。