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 相关文章推荐
php a simple smtp class
Nov 26 PHP
php下判断数组中是否存在相同的值array_unique
Mar 25 PHP
php 缓存函数代码
Aug 27 PHP
Zend Studio 无法启动的问题解决方法
Dec 04 PHP
PHP学习之字符串比较和查找
Apr 17 PHP
基于PHP常用函数的用法详解
May 10 PHP
php使用递归计算文件夹大小
Dec 24 PHP
php设置页面超时时间解决方法
Sep 22 PHP
功能强大的PHP图片处理类(水印、透明度、旋转)
Oct 21 PHP
PHP创建word文档的方法(平台无关)
Mar 29 PHP
Laravel框架用户登陆身份验证实现方法详解
Sep 14 PHP
浅谈Laravel中的三种中间件的作用
Oct 13 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删除文件夹的三种方法
2013/06/09 PHP
php文件上传简单实现方法
2015/01/24 PHP
PHP实现Redis单据锁以及防止并发重复写入
2018/04/10 PHP
JQuery自定义事件的应用 JQuery最佳实践
2010/08/01 Javascript
使用ExtJS技术实现的拖动树结点
2010/08/05 Javascript
Javascript 闭包引起的IE内存泄露分析
2012/05/23 Javascript
JS判断客户端是手机还是PC的2个代码
2014/04/12 Javascript
Blocksit插件实现瀑布流数据无限( 异步)加载
2014/06/20 Javascript
Javascript验证上传图片大小[前台处理]
2014/07/18 Javascript
使用js dom和jquery分别实现简单增删改
2014/09/11 Javascript
JavaScript插件化开发教程 (一)
2015/01/27 Javascript
使用jquery获取url以及jquery获取url参数的实现方法
2016/05/25 Javascript
jQuery数据检索中根据关键字快速定位GridView指定行的实现方法
2016/06/08 Javascript
js数组常用操作方法小结(增加,删除,合并,分割等)
2016/08/02 Javascript
15个非常实用的JavaScript代码片段
2016/12/18 Javascript
Javascript基础回顾之(一) 类型
2017/01/31 Javascript
详解A标签中href=""的几种用法
2017/08/20 Javascript
vue移动端UI框架实现QQ侧边菜单组件
2018/03/09 Javascript
Vue.directive 实现元素scroll逻辑复用
2019/11/29 Javascript
微信小程序实现拨打电话功能的示例代码
2020/06/28 Javascript
Vue+ElementUI 中级联选择器Bug问题的解决
2020/07/31 Javascript
[51:43]OG vs LGD 2018国际邀请赛淘汰赛BO3 第五场 8.26
2018/08/30 DOTA
Python的类实例属性访问规则探讨
2015/01/30 Python
机器学习之KNN算法原理及Python实现方法详解
2018/07/09 Python
Python 在OpenCV里实现仿射变换—坐标变换效果
2019/08/30 Python
Python pip安装模块提示错误解决方案
2020/05/22 Python
opencv 实现特定颜色线条提取与定位操作
2020/06/02 Python
Python爬虫实例之2021猫眼票房字体加密反爬策略(粗略版)
2021/02/22 Python
分享全球十款超强HTML5开发工具
2014/05/14 HTML / CSS
HTML5 3D衣服摇摆动画特效
2016/03/17 HTML / CSS
当当网官方旗舰店:中国图书销售夺金品牌
2018/04/02 全球购物
联想C++笔试题
2012/06/13 面试题
缴纳养老保险的证明
2014/01/10 职场文书
环保倡议书范文
2014/05/12 职场文书
新农村建设指导员工作总结
2015/08/13 职场文书
Window server中安装Redis的超详细教程
2021/11/17 Redis