我如何设法使用电子邮件地址登录,而不是使用标准版(用户名+密码).我在我的数据库中输入了我的用户的网站,但有没有办法将其更改为使用电子邮件地址而不是该用户名,因为当我使用Gii时,我遇到了很多错误,即使我尝试修复这些错误
小智 5
首先,尝试找到您的SiteController或您用于索引路由的任何其他控制器.它应该有一个与登录路径对应的动作功能; 它通常带有签名 public function actionLogin().
您应该看到初始化的模型(通常是LoginForm模型).该模型应具有登录逻辑功能,检查该功能以确定用户真实性.您应该会发现此函数调用另一个login需要User对象作为第一个参数/参数的函数.该功能通常是$this->getUser()功能.
调查这将指向您调用实际数据模型,该模型通过您指定的任何条件/属性获取用户; 这可以是电子邮件或其他任何可能甚至不需要唯一的东西,但通常,您希望使用像username和这样的唯一数据属性email.此功能依赖于用户数据模型.它通过Gii默认调用该函数User::findByUsername(search_property)
Yii2提供了一个实现Identity接口的默认用户模型; 那就是你想要进行调整的地方.它应该具有所需的静态功能findByUsername()或类似的功能.您会发现Yii2默认在静态数据中搜索以查找用户,您应该将其链接到我假设您使用Gii生成的(用户)数据模型.
我的Gii序列通常看起来像这样:
config/db.phpmodel/User.php为model/OldUser.phpimplements yii\web\IdentityInterface到类声明,使新生成的用户模型实现IdentityInterface以允许Yii2自由给定的会话管理.findUserByEmail($email)或findUserByUsername($username)我的通常看起来像这样
我希望这有帮助.