如何覆盖Yii2 $ app-> user->身份

时间:2018-02-05 10:04:03

标签: php yii2

我有一个使用辅助数据库的模块。在其中,我试图从该辅助数据库登录user表。问题是\Yii::$app->user->identity->id正在使用第一个数据库。我应该如何覆盖类这样做呢?我在模块中LoginForm.php得到的是:

public function login()
    {

        if ($this->validate() && $this->user) {
            $isLogged = Yii::$app->getUser()->login($this->user, $this->rememberMe ? $this->module->rememberFor : 0);
            //var_dump($this->user);exit;
            if ($isLogged) {
                $user = \frontend\modules\store\models\User::findOne(Yii::$app->user->identity->id);
                $user->last_login_at = time();
                $user->update();
              //  $this->user->updateAttributes(['last_login_at' => time()]);
            }

            return $isLogged;
        }

        return false;
    }

正如您所看到的,此处的user类被覆盖,并且它正在使用辅助数据库。但是我应该如何覆盖Yii::$app->user->identity->id以使用此数据库呢?提前谢谢!

2 个答案:

答案 0 :(得分:1)

您可以在配置

中覆盖用户身份
'user' => [
'identityClass' => 'app\models\User', // User must implement the IdentityInterface
'enableAutoLogin' => true,
// 'loginUrl' => ['user/login'],
// ...

更多信息here

答案 1 :(得分:1)

在使用Yii2高级模板时,应考虑添加新的子应用程序。 Yii2高级模板允许您为frontendbackend子应用程序设置不同的会话。 Advanced Template on Same Domain and different sessions

同样,您可以添加新的应用,在您的情况下,它可能被称为store。如果您将其作为单独的应用程序执行,则可以简单地覆盖标识类,甚至可以为user设置不同的模型。 Help about adding new app is here.