资讯专栏INFORMATION COLUMN

YII2自动登录Cookie失效问题解决

avwu / 388人阅读

摘要:最近做自动登录功能,发现即使开启了的自动登录配置功能,浏览器关闭后,再次打开浏览器还是处于非登录状态。查询登录源码打印变量发现内容没有任何问题。复制代码去其他控制器执行也是毫无问题。

最近做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去判断,不要打断执行。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/22532.html

相关文章

  • web登录分析(简单登录与单点登录

    摘要:系统从认证中心得到校验成功的结果后,则可以认为用户已登录。认证中心发现用户未登录没有,将用户引导至登录界面。用户提交登录信息到认证中心。 简单登录 登录流程 首先让我们分析一下一个简单的登录是怎么实现的。 一个简单的登录流程 用户输入url访问站点,接受用户请求后判断用户是否已经登录,若未登录则跳转到登录页面 用户访问登录页面,填写并提交登录表单 web应用对登录表单进行验证,若...

    jasperyang 评论0 收藏0
  • yii2中session跨域名的问题

    摘要:可是,我们的域名有这三个域名仅仅是不同的环境,因此,的跨域名访问就引出来了。无论是一二级域名,和不同域名下的跨域,无非要达到两点客户端访问同一个所有域名对应的服务器访问的的数据的位置必须一致。 关闭httponly引起的问题 场景1: 测试A:咦,为什么test环境登录不了呢? 程序员:清缓存。 测试B:握草,dev也登录不了。。。谁看看! 程序员:清缓存。 测试们:。。。唉 场景...

    rollback 评论0 收藏0
  • 进一步优化Yii2跨域的SSO登录

    摘要:序言本文主要是对关于如何实现跨域的登录的解析的改进,因为在那篇文章中我已经写出了登录的基本实现过程,现在是进一步优化。实现永久登录状态。只要不点击退出登录,就一直保持着登录状态。存在时,提交表单判断修改的过期时间,设置到极大值。 序言 本文主要是对关于Yii2如何实现跨域的SSO登录的解析的改进,因为在那篇文章中我已经写出了SSO登录的基本实现过程,现在是进一步优化。主要优化的部分有两...

    罗志环 评论0 收藏0
  • 你真的了解 Cookie 和 Session 吗

    摘要:浏览器的同源策略把跨域请求都禁止了,但是页面中的标签是例外,不受同源策略限制。的理念就是,与服务端约定好一个回调函数名,服务端接收到请求后,将返回一段,在这段代码中调用了约定好的回调函数,并且将数据作为参数进行传递。我在做面试官的时候,曾经问过很多朋友这个问题: Cookie 和 Session 有什么区别呢?大部分的面试者应该都可以说上一两句,比如:什么是 Cookie?什么是 Sessi...

    lijy91 评论0 收藏0
  • 前后端分离下的CAS跨域流程分析

    摘要:这种情况通常发生在反向代理的时候,前端发起请求代理服务器,代理服务器发起请求到,这时候就容易导致域名不一致,请一定要注意这点。 写在最前 前后端分离其实有两类: 开发阶段使用dev-server,生产阶段是打包成静态文件整个放入后端项目中。 开发阶段使用dev-server,生产阶段是打包成静态文件放入单独的静态资源服务器中,如nginx。 这两种方案最大的区别就是生产阶段。由于第...

    ckllj 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<