问题:项目在部署到服务器后,一登录,就会跳出系统,提示登录超时。

1.用户未登录 2.用户登录在线超时 3.session中记录的用户id和动作传递的用户id不同(非本人操作)

解决:创建sessionListener,通过监听来确定session的创建和销毁。

发现:别人访问本机的项目没有问题,访问非本机的项目时,出现了bug,session第一次访问创建了一个,然后销毁再创建一个新的,和另外一个session。

通过sessionListener,打印日志发现一次访问,创建了3个session,这样就导致了session不一致的原因,通过注释掉一个拦截器后,session顺利变成1个create,1个destroy,再一个create。

上网查看了tomcat下session丢失的原因,有以下几种:1.跨域访问。2.使用多台tomcat服务器进行负载均衡,未进行session复制操作导致session丢失。3.未对session进行持久化操作。逐一分析如下:

通过查看日志发现,被拦截时session中的内容为空,故被拦截跳转回登录页面。但是在这之间,并无程序如session.invalidate()让session失效的操作,且session并没有超时,故基本可判定是session丢失的情况。

上网查看了tomcat下session丢失的原因,有以下几种:1.跨域访问。2.使用多台tomcat服务器进行负载均衡,未进行session复制操作导致session丢失。3.未对session进行持久化操作。逐一分析如下:

1.跨域访问。所谓跨域访问,即如果在A网站中,我们希望用Ajax来获得B网站中的特定内容,如果A网站与B网站不在同一个域当中,则会出现跨域访问的情况。对于多个子系统的项目而言,多次通过浏览器进行跨域访问,会引起session不一致和session丢失的情况。解决跨域而导致的session丢失的情况处理参考《跨域,跨服务器调用的时候session丢失的问题总结》。由于本项目未采用跨域访问,故排除这种可能性。

2.使用多台tomcat服务器实现负载均衡导致的session丢失。当使用tomcat服务器进行负载均衡时,如果不对session共享,会出现session唯一的情况,同样会导致session丢失。这就需要各服务器做到session同步,也就是所谓的session复制。Session复制,指的是集群环境下,多台应用服务器之间同步session,确保session保持一致,同时保持session中的内容一致,对外透明,就像一台应用服务器一样。对于这种情况的避免session丢失的处理参考《Apache+Tomcat负载均衡 session复制》。在项目当中,并未使用多台tomcat服务器实现负载均衡,故同样可以排除这种情况导致的session丢失。

3.session未做持久化操作导致丢失。在客户端每个用户的Session对象存在Servlet容器中,如果Tomcat服务器重起/当机的话该session就会丢失,而客户端的操作应为session的丢失而造成数据丢失,而且当前用户访问量巨大,每个用户的Session里存放大量的数据的话,那么就很占用服务器大量的内存,从而是服务器的性能受到影响。因此,需要对session进行持久化操作。持久化操作的方法参见文章《tomcat session持久化》。在本项目中,session丢失的情况是出现在项目运行的过程中,而不是tomcat重启的时候,因此,可以排除是由于没有做持久化操作而导致的session丢失。

经过上述分析,排除了可能导致session丢失的几种主要情况。这再一次让我感觉无计可施。而项目验收时频繁出现用户登出系统的情况又让这个问题的解决迫在眉睫。正当一筹莫展的时候,从一次偶尔的交谈中得知,服务器在搭建的过程中,并非直接使用tomcat,而是使用了apache作为代理服务器,转发请求至后台的tomcat服务器,会不会是由于代理的原因导致的呢?通过查阅资料发现,tomcat中的应用contex路径为 /portal,而外部访问context路径为 /,JSESSIONID的值从浏览器经过反向代理到达tomcat时,由于cookie内外路径不一致,导致tomcat每次重写设置JSESSIONID的值,导致session丢失的现象。在apache的000-default.conf中需要通过ProxyPassReverseCookiePath指令做一个路径映射,如下图:

以上是对应的可能性。

引用文章:https://blog.csdn.net/dinghaoseu/article/details/50499600

登陆后会经常提示登陆超时,重新登陆相关推荐

  1. PC网站接入微信登陆流程四:后端处理登陆后的code,和获取微信登陆用户的信息

    1.文档在这里 ==>> 授权后接口调用(UnionID) 2.前端登陆成功后,需要提交code给后端,后端接受到请求后,进行处理,下面的例子均为Python版本 第一步:通过code获取 ...

  2. postman模拟登陆后的请求 COOKIE PHPSESSID

    开发网页的时候,很多页面都需要登录之后才能请求,否则会跳转到登陆页面,这时候,我们可以使用postman进行模拟请求,携带上登陆后的PHPSESSID即可,后端验证是否登陆就是根据这个PHPSESSI ...

  3. 手游飞车显示服务器超时,QQ飞车手游登录超时怎么办? 更新之后进游戏提示登录超时解决方法...

    更新之后,QQ飞车手游提示登录超时怎么办?QQ飞车手游将于2月8日更新新版本新春版,本次更新后玩家们可能会遇到各种各样的问题.为了让大家更好的解决问题,小编在这里就为大家准备了一些问题的解决方法,赶快 ...

  4. validatebox只提示不阻止提交_用友NC系统“登陆后页面显示不完全”,怎么办?...

    用友NC系统使用过程中常见问题和解决方法: 1.无法安装客户端插件,不能进入NC系统登陆界面 问题现象 现象1:可以打开web界面,但无法进入登陆界面,一直停留在右图所示界面. 现象2:系统提示安全警 ...

  5. 计算机更名无法登陆用友u8,用友T6软件修改了计算机名称后,系统管理提示不能连接服务器-用友T6...

    文章摘要:用友T6软件修改了计算机名称后,系统管理提示不能连接服务器修改了计算机名称后,系统管理提示不能连接服务器 修改了计算机名称后,系统管理提示不能连接服务器原因分析:配置问题,连接数据库的时候, ...

  6. ubuntu登陆后一闪回到登陆界面

    ubuntu登陆后一闪回到登陆界面 最后发现居然是我的环境变量配置问题........ 解决方法: 先CTRL+ALT+F1   root进去, 查看nickleo用户为什么登录失败 cat /hom ...

  7. 微信公众账户模拟登陆后的一系列操作

    <?php header("content-type:text/html;charset=utf-8");/*** wx_mass* * 完成微信公众账户模拟登陆后的一系列操 ...

  8. 微光集市-登陆后用户对购物车的操作(版本4.0)

    本文承接上文-微光集市-基于Security的用户登录功能及用户注册功能(版本3.0) 文章目录 登陆后用户对购物车的操作 1 获得登录用户购买商品数量,及将固定用户修改为当前用户 1.1 客户端 1 ...

  9. dede后台登陆后一片空白的解决办法汇总

    dede后台登陆后一片空白的第一种解决办法: 找到:include/common.inc.php文件,打开,查找程序代码://error_reporting(E_ALL);error_reportin ...

最新文章

  1. C# 获取指定目录下所有文件信息、移动目录、拷贝目录
  2. 2G---5G与未来天线技术
  3. Kali Linux安装谷歌输入法
  4. 5G NGC — AF 的 Service information
  5. q标签,短文本引用;blockquote标签,长文本引用
  6. Python numpy 平方、乘方和平方根函数
  7. Android中添加背景音乐的两种方法
  8. 拟真机器人拯救者奖励_冒险岛新版本拟真机器人什么样 新版本攻略
  9. h5的横线_CSS文字两边添加横线的几种方法
  10. React开发(257):react项目理解 ant design model提示问题
  11. 面试准备每日五题:C++(二)——mallocnew、宏、volatile、constvolatile、(a)和(a)
  12. perl CGI::Session
  13. 【转】oracle order by 处理NULL 值
  14. 2019.04.07 电商12 登录界面的验证
  15. 阿里巴巴规范之POJO类中布尔类型的变量都不要加is前缀详解
  16. Windows系统服务器系统日志在哪里查看?
  17. android虚拟机启动失败
  18. 双十一,程序员可太难了
  19. 全民一起VBA提高篇 第三十二回 Select 简化分枝结构,静态变量坐看沧海桑田
  20. 南海云课堂春季11(T)K1 拓展:单调队列

热门文章

  1. 程序员发帖引争议!公务员香吗?哪来的优越感?
  2. 15台电脑无盘服务器配置,15台有盘网吧电脑配置、服务器配置、
  3. 大学生职业规划大赛计算机专业,计算机系召开大学生职业生涯规划大赛动员会...
  4. Python个人网盘源码、云盘系统源程序,基于Django+Mysql
  5. cf Educational Codeforces Round 77 E. Tournament
  6. k8s学习(二十一) 亲和性调度
  7. Ubiquitous Computing / Pervasive Computing
  8. uniapp判断浏览器
  9. 实验二 词频统计软件项目报告
  10. 东南大学计算机2020初试成绩公布,东南大学2020考研复试分数线已公布