繁体   English   中英

如何覆盖Yii2 $ app-> user-> identity

[英]How to Override Yii2 $app->user->identity

我有一个使用辅助数据库的模块。 在其中,我尝试从该辅助数据库登录到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来使用此数据库? 先感谢您!

您可以在配置中覆盖用户身份

'user' => [
'identityClass' => 'app\models\User', // User must implement the IdentityInterface
'enableAutoLogin' => true,
// 'loginUrl' => ['user/login'],
// ...

]

更多信息在这里

在使用Yii2高级模板时,应该考虑添加一个新的子应用程序。 Yii2先进的模板可以让你有不同会话frontendbackend副应用。 同一域和不同会话上的高级模板

同样,您可以添加一个新应用,在您的情况下,它可以称为store 如果您将其作为单独的应用程序进行操作,则可以简单地覆盖身份类,甚至可以为user使用不同的模型。 有关添加新应用的帮助在这里。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM