首页 > 代码库 > Yii 2 —— 记住密码

Yii 2 —— 记住密码


Yii 2的登录页面提供了“记住密码”,这个功能最终是将相关信息保存在cookie中,从而实现自动登录的。

LoginForm的代码,校验密码的代码是这样的:

public function login()
 {
    
if ($this->validate()) {
        
return Yii::$app->user->login($this->getUser(),  $this->rememberMe ? 3600 * 24 * 30 : 0);
    
} else {
        
return false;
    
}
 }

 

红色那一行代码就是用来完成登录处理的,包括了最终完成记住密码的功能。这行代码有个细节需要注意,它是调用$app->user对象的login接口处理密码校验后的业务,但是接口的第一个参数,明显也是一个user,那么$app->user$this->getUser(),这两个user有什么不同?

 

$app->user,是web\User,用来处理用户登录相关功能的,譬如实现记住密码、自动登录、自动跳转等功能,这些功能对于大多数系统来说都是需要的,因此放在框架里处理比较合适。

 

$this->getUser,是一个Model,由用户自定义,当然,Yii2也提供了默认的User Model,主要是用来处理与密码校验有关的业务,这些算法往往是由框架使用者自己确定的,因此被框架剥离出来。

 

最终根据将登录信息保存到cookie中,是在web\User->switchIdentity()完成的。


本文出自 “rainman” 博客,请务必保留此出处http://lancelot.blog.51cto.com/393579/1873243

Yii 2 —— 记住密码