YII2自动登录Cookie总是失效的解决方法


Posted in PHP onJune 28, 2017

前言

最近做Yii2自动登录功能,发现即使开启了Yii2的自动登录配置功能,浏览器关闭后,再次打开浏览器还是处于非登录状态。

网上查询资料基本没有相同情况。

查询登录源码:

protected function sendIdentityCookie($identity, $duration)
{
 $cookie = new Cookie($this->identityCookie);
 $cookie->value = json_encode([
  $identity->getId(),
  $identity->getAuthKey(),
  $duration,
 ], JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE);
 $cookie->expire = time() + $duration;
 Yii::$app->getResponse()->getCookies()->add($cookie);
}

打印cookie变量发现内容没有任何问题。复制代码去其他控制器执行也是毫无问题。

查看浏览器,Yii2设置的sessionID也是正常的,也就是cookie只是这里设置不成功。

既然,系统没问题,浏览器没问题,那么就是传输过程有问题。

后来终于发现:原来在调用$model->login()登录方法过后,我直接输出json数据到浏览器,并且在后面有exit方法,直接阻止了控制器继续执行。

所以,yii2执行到exit处就完了,导致头信息header也没有被传输到浏览器。所以浏览器根本没有收到php设置cookie的命令。

总结

Yii2登录或者需要设置cookie的控制器,千万不要exit or die,直接使用if else去判断,不要打断执行。

好了,以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对三水点靠木的支持。

PHP 相关文章推荐
一个程序下载的管理程序(三)
Oct 09 PHP
php adodb连接mssql解决乱码问题
Jun 12 PHP
php 生成静态页面的办法与实现代码详细版
Feb 15 PHP
PHP 杂谈《重构-改善既有代码的设计》之一 重新组织你的函数
Apr 09 PHP
php生成静态文件的多种方法分享
Jul 17 PHP
php读取二进制流(C语言结构体struct数据文件)的深入解析
Jun 13 PHP
php示例详解Constructor Prototype Pattern 原型模式
Oct 15 PHP
利用PHP自动生成印有用户信息的名片
Aug 01 PHP
PHP中关键字interface和implements详解
Jun 14 PHP
在laravel框架中使用model层的方法
Oct 08 PHP
对laravel的csrf 防御机制详解,及form中csrf_token()的存在介绍
Oct 24 PHP
Laravel实现批量更新多条数据
Apr 06 PHP
php的常量和变量实例详解
Jun 27 #PHP
Zend Framework框架中实现Ajax的方法示例
Jun 27 #PHP
PHP用continue跳过本次循环中剩余代码的注意点
Jun 27 #PHP
PHP API接口必备之输出json格式数据示例代码
Jun 27 #PHP
利用PHP获取访客IP、地区位置、浏览器及来源页面等信息
Jun 27 #PHP
简单谈谈PHP面向对象之标识对象
Jun 27 #PHP
什么是PHP文件?如何打开PHP文件?
Jun 27 #PHP
You might like
PHP控制网页过期时间的代码
2008/09/28 PHP
linux系统上支持php的 iconv()函数的方法
2011/10/01 PHP
php简单计算页面加载时间的方法
2015/06/19 PHP
PHP实现搜索相似图片
2015/09/22 PHP
在Mac OS上搭建Nginx+PHP+MySQL开发环境的教程
2015/12/21 PHP
PHP实现导出带样式的Excel
2016/08/28 PHP
PHP封装的数据库模型Model类完整示例【基于PDO】
2019/03/14 PHP
Laravel定时任务的每秒执行代码
2019/10/22 PHP
javascript实现的动态文字变换
2007/07/28 Javascript
键盘 keycode的值 javascript时触发事件时很有用的要素
2009/11/02 Javascript
jquery使用jxl插件导出excel示例
2014/04/14 Javascript
jQuery关键词说明插件cluetip使用指南
2015/04/21 Javascript
jQuery实现径向动画菜单效果
2015/07/17 Javascript
js鼠标点击图片切换效果实现代码
2015/11/19 Javascript
JavaScript与HTML的结合方法详解
2015/11/23 Javascript
jQuery实现的自定义滚动条实例详解
2016/09/20 Javascript
js定时器实例分享
2016/12/20 Javascript
使用BootStrap实现表格隔行变色及hover变色并在需要时出现滚动条
2017/01/04 Javascript
JavaScript日期选择功能示例
2017/01/16 Javascript
bootstrap PrintThis打印插件使用详解
2017/02/20 Javascript
jQuery使用JSONP实现跨域获取数据的三种方法详解
2017/05/04 jQuery
JavaScript反弹动画效果的实现代码
2017/07/13 Javascript
详解创建自定义的Angular Schematics
2018/06/06 Javascript
vue如何进行动画的封装
2018/09/26 Javascript
[01:00:30]TFT vs VGJ.T Supermajor 败者组 BO3 第一场 6.5
2018/06/06 DOTA
Python 类与元类的深度挖掘 I【经验】
2016/05/06 Python
python中的反斜杠问题深入讲解
2019/08/12 Python
关于Python核心框架tornado的异步协程的2种方法详解
2019/08/28 Python
python return逻辑判断表达式实现解析
2019/12/02 Python
法制宣传日活动总结
2014/04/29 职场文书
先进单位事迹材料
2014/12/25 职场文书
2015学校六五普法工作总结
2015/04/22 职场文书
HTML基础-标签分类(闭合标签,空标签,块级元素,行内元素,行级块元素,可替换元素)
2021/03/31 HTML / CSS
python实现图片批量压缩
2021/04/24 Python
缓存替换策略及应用(以Redis、InnoDB为例)
2021/07/25 Redis
Python批量解压&压缩文件夹的示例代码
2022/04/04 Python