找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 424|回复: 0
打印 上一主题 下一主题

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

[复制链接]

2600

主题

2600

帖子

7736

积分

论坛元老

Rank: 8Rank: 8

积分
7736
跳转到指定楼层
楼主
发表于 2018-2-14 05:25:02 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

            前言
最近做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去判断,不要打断执行。
好了,以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对脚本之家的支持。
            
            
您可能感兴趣的文章:
  • 从零开始学YII2框架(一)通过Composer安装Yii2框架
  • 从零开始学YII2框架(二)通过 Composer 安装扩展插件
  • 从零开始学YII2框架(三)扩展插件yii2-gird
  • 从零开始学YII2框架(四)扩展插件yii2-kartikgii
  • 从零开始学YII2框架(五)快速生成代码工具 Gii 的使用
  • 从零开始学YII2框架(六)高级应用程序模板
  • Yii2中OAuth扩展及QQ互联登录实现方法
  • Yii2框架实现注册和登录教程
  • Yii2实现多域名跨域同步登录退出
  • 修改yii2.0用户登录使用的user表为其它的表实现方法(推荐)
  • Yii2框架实现登录、退出及自动登录功能的方法详解
            
  • 分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    用户反馈
    客户端