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()完成的。






本文转自 tywali 51CTO博客,原文链接:http://blog.51cto.com/lancelot/1873243,如需转载请自行联系原作者

目录
相关文章
如何在Yii2.0项目中安装Jasny SSO?
如何在Yii2.0项目中安装Jasny SSO?
100 0
|
安全 数据安全/隐私保护
YII2.0的findIdentityByAccessToken如何实现登录?
YII2.0的findIdentityByAccessToken如何实现登录?
120 0
|
PHP
【laravel项目】@2 账号密码登录验证(2)
【laravel项目】@2 账号密码登录验证
60 0
【laravel项目】@2 账号密码登录验证(2)
|
PHP
【laravel项目】@2 账号密码登录验证(1)
【laravel项目】@2 账号密码登录验证
62 0
【laravel项目】@2 账号密码登录验证(1)
|
PHP
【laravel】在使用Auth认证时,登录后直接进入home,不登录会直接跳转到login
【laravel】在使用Auth认证时,登录后直接进入home,不登录会直接跳转到login
236 0
【laravel】在使用Auth认证时,登录后直接进入home,不登录会直接跳转到login
|
安全 PHP
【laravel】@20 安全系列-Auth登录认证
【laravel】@20 安全系列-Auth登录认证
87 0
|
数据安全/隐私保护
dwz密码修改成功后跳转到登录页
dwz密码修改成功后跳转到登录页
207 0
页面获取用户信息应用权限添加和配置「开发者账号配置」
本帖讲述的是页面的授权获取用户信息、第三方应用授权等应用权限添加和配置第一步:获得一个应用APPID、功能权限添加完毕。需要有一个应用,应用创建可以参考:官方开发文档应用创建  并对应用进行功能权限的添加,文档有:添加功能示例,我们要添加的是:获取会员信息 如果是第三方应用授权则需要添加:第三方应用授权 第二步:获得自己生成的私钥、使用自己生成的公钥交换而来的支付宝公钥、授权回调地址1、密钥配置,可以看: 签名专区。
443 0
|
机器人 测试技术
Robot Framework之使用Cookie获取验证码登录账户
前言 大家都知道,在登录账号时很多需要填写验证码。在做自动化测试的过程中,验证码有多种解决方案(1.让开发去掉验证码;2.使用万能验证码;3.在脚本上使用代码识别验证码;4.使用Cookies获取验证码),为了更为直观的让大家了解,下面就使用Cookies方式来验证登录时跳过验证码。
2495 0
|
PHP 数据安全/隐私保护
laravel 5.6 登录验证码 captcha 引入
用户登陆注册, 不管前台后台, 如果掌握了手机短信和图形验证码, 那安全性会好很多, PHP上常见有两个captcha图形验证方式, gregwar/captcha和mews/captcha 参考下面的连接,用mews/captcha,感觉很方便。
6624 0