`
chunfengxixi
  • 浏览: 42289 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

奇怪的session混乱问题

阅读更多
   服务器:jboss4.2
   问题:偶尔两个帐号在两台不同的机器上,a帐户获取了b帐号的session值
  
public ActionForward loadDialogList4Inbox(ActionMapping mapping,
            ActionForm form,
            HttpServletRequest request,
            HttpServletResponse response)throws Exception{
        MailService service = (MailService)this.getBean("mailService");
        List labels = (List)request.getSession().getAttribute("labels");
        if(labels == null){
            labels = service.loadLabelWithTotal(this.getUserId());
            request.getSession().setAttribute("labels",labels);
        }
        return mapping.findForward("dialogList");
  }
分享到:
评论
11 楼 iceskysl 2007-10-02  
抛出异常的爱 写道
刚刚在
技能云http://www.itechtag.com/about
遇到了。。。
用的是温柔一刀的账号。。。。。


这个问题,我查看了下代码,确实存在一个疏忽,原来是这样的:
# def get_current_user  
#   if session[:user].nil?  
#     if cookies[:p_session_id] && p = PersistentLogin.find_by_uid(cookies[:p_session_id])  
#       session[:user] = c_user.id  
#     end  
#   end  
# end 


这里的session[:user] = c_user.id  这句是错误的,取错字段了,应该是取该表的user_id字段的,一时疏忽,多谢提醒,为此专门写了一篇文章分析。
http://blog.1sters.com/?action=show&id=38
10 楼 fyting 2007-09-27  
...牛,以前我们项目里也有这种代码,上线后才发现,图省事直接改成ThreadLocal吧
9 楼 chunfengxixi 2007-09-27  
public class BaseMappingDispatchAction extends MappingDispatchAction {

            private static Logger logger;
            protected int userId, orgId;
            protected String userAccount, userName, orgName;
            protected final Log log = LogFactory.getLog(getClass());
            private static ApplicationContext ctx = null;

            public BaseMappingDispatchAction() {
            }
}
这是基类,问题就是它定义的是实例变量而不是局部变量,并发访问时我获取了错误的用户id,于是获取了错误的值放在session中了,而不是session混乱了
8 楼 dennis_zane 2007-09-27  
服务器不可能出问题的,肯定是代码问题,将session作为实例变量了。
7 楼 chunfengxixi 2007-09-27  
问题就是这里了,action的基类居然是把该值int userId=this.getUserId()作实例变量保存.狂晕!
6 楼 chunfengxixi 2007-09-27  
这是公司的基类中直接获取登录用户的id
this.getUserId()
5 楼 fyting 2007-09-27  
从代码里没看出问题来,你的Web应用部署方式是怎样的,我以前遇到过取不到session值的问题,是因为把tomcat里的context和host的appBase指向了同一个目录,结果实质上产生了两个Web应用。
一般这种奇怪的问题不太可能是服务器出错,很可能是哪儿犯低级错误了,只有自己一步步检查。

this.getUserId());   

晕,没仔细看,这句是什么?
4 楼 chunfengxixi 2007-09-26  
咋没人出来解个惑啊?自己顶
3 楼 baibai326 2007-09-26  
楼上的,莫非这是传说中的request 混乱了?

session也能混乱就太恐怖了。

我没有遇到过,只是猜测下。根据原理,sessionID  理论上是唯一的,也许多线程等原因让这个理论不成立了?
2 楼 chunfengxixi 2007-09-26  
自己顶一下,楼上的看起来不是在回复本贴,并且在列表页面统计本帖回复数为0(不计本回复),第一次发贴就bug,呵呵
1 楼 抛出异常的爱 2007-09-26  
刚刚在
技能云http://www.itechtag.com/about
遇到了。。。
用的是温柔一刀的账号。。。。。

相关推荐

    浏览器多窗口共用session引发的混乱

    "浏览器多窗口共用session引发的混乱"这个标题揭示了一个常见但往往被忽视的问题,即当用户在同一浏览器的不同窗口或标签页中打开同一个网站时,它们可能会共享同一份Session数据,这可能导致意料之外的行为和用户...

    解决springboot实现跨域session共享问题

    然而,随着Web服务的复杂性和交互性增加,跨域资源共享(CORS)和会话(Session)共享成为开发者需要面对的重要问题。本文将详细讲解如何在Spring Boot应用中解决跨域session共享的问题,并探讨防止SQL注入的相关...

    关于session丢失问题

    然而,Session丢失问题可能会导致用户在未主动退出的情况下被迫重新登录,这对用户体验来说是极为不便的。以下将详细探讨Session丢失的可能原因及解决策略。 1. **Session超时**:服务器默认设置了一个Session的...

    phpcms web发布session过期问题解决

    在实际使用过程中,用户可能会遇到各种问题,其中"phpcms web发布session过期问题"是一个常见的困扰。这个问题通常出现在用户登录后,在一段时间不操作或者刷新页面时,系统提示session已过期,导致用户需要重新登录...

    验证码的session问题

    验证码的Session问题主要涉及到Web应用中的用户验证与安全机制。在Web开发中,验证码是一种防止自动机器人或恶意脚本进行非法操作的有效手段,如防止批量注册、刷票等。而Session是服务器端用来存储用户会话信息的一...

    session session session szsessdifn

    4. 安全性:Session信息存储在服务器端,相对安全,但若Session ID被窃取,可能会导致安全性问题。 5. 依赖客户端:如果用户禁用了Cookie,或者使用了隐私模式,Session的实现会受到影响。 为了克服Session的一些...

    网页session的一些常见问题并解决方案

    然而,随着网站规模的扩大和用户数量的增长,Session管理可能会遇到一系列问题。本文将探讨这些问题,并提供相应的解决方案。 一、Session超时问题 在ASP.NET中,Session默认会在20分钟后过期。如果用户长时间无...

    微信小程序实现Session功能及无法获取session问题的解决方法

    因为小程序原生不支持Cookie,因此也不支持Session。 网上找到的的一些方法有缺陷,而且很多累赘,估计没有实际测试过,在此直接给出实测可用的代码。 大概思路就是借助小程序本地储存+网络请求的header可读可写来...

    【ASP.NET编程知识】iframe跨域与session失效问题的解决办法.docx

    ASP.NET 跨域与 Session 失效问题的解决办法 在 ASP.NET 开发中,跨域和 Session 失效问题是一个常见的问题,特别是在使用 iframe 嵌入远程应用时。今天,我们来讨论这个问题的解决办法。 什么是跨域和 Session ...

    tomcat集群使用redis解决session共享问题

    tomcat集群使用redis解决session共享问题,压缩包包含redisclient-win32.x86.2.0客户端、Redis-x64-3.2.100服务、tomcat-redis-session以及部署安装文档

    完美解决ajax访问遇到Session失效的问题

    现在Ajax在Web项目中应用广泛,几乎可以说无处不在,这就带来另外一个问题:当Ajax请求遇到Session超时,应该怎么办? 显而易见,传统的页面跳转在此已经不适用,因为Ajax请求是XMLHTTPRequest对象发起的而不

    session过期问题

    4. **并发访问问题**:同一用户在多个设备或浏览器窗口同时登录,可能导致Session冲突,需考虑并发访问下的Session管理。 5. **安全防护**:防止Session Hijacking(会话劫持)和Session Fixation(会话固定)攻击...

    在asp.net中使用session常见问题集锦

    ### 在ASP.NET中使用Session常见问题集锦 #### Session为何会丢失? 在ASP.NET应用程序中,用户的状态(Session)有时会出现丢失的情况。这种情况的发生可能是由于多种原因造成的,比如应用程序池的回收、Session...

    iframe 跨域访问session

    然而,当涉及到跨域时,`iframe` 遇到的问题之一就是无法正常访问父页面或被嵌入页面的`session`。这是因为浏览器的同源策略(Same-Origin Policy)限制了不同源之间的交互,包括`session`和`cookie`。 同源策略是...

    解决session不同问题所需jar包

    标题"解决session不同问题所需jar包"指出了这个问题的关键:我们需要一个特定的jar包来解决Session同步的问题。这个jar包可能是实现了Session共享或复制的解决方案,例如使用粘性会话(Sticky Sessions)或者Session...

    集中式session管理方案

    集中式Session管理方案是解决多应用、多服务器之间Session共享问题的一种有效方法,尤其在分布式系统和集群环境中显得尤为重要。这种方案旨在确保用户在不同应用系统之间切换时,其Session信息能够保持一致,提供...

    同浏览器不同窗口不同用户Session问题

    正对java Web项目,同浏览器同时打开两个登录窗口(不同Tag),用不同用户登录,为避免使用同一个Session,需要使用这段代码。否则先登录的用户的Session会变成后登录用户的Session.相关系统使用权限也会变。

    CASClient集群环境的Session问题及解决方案.docx

    CASClient 集群环境的 Session 问题及解决方案 本文将详细介绍 CASClient 集群环境中的 Session 问题及解决方案。CASClient 是一种开源的单点登录系统,能够提供统一的登录和注销机制。但是在集群环境中应用 CAS...

    spring session redis分布式session

    本文将详细介绍Spring Session与Redis集成,以及如何自定义Session来应对分布式环境中的Session不同步问题。 **1. Spring Session概述** Spring Session是一个开放源码项目,它扩展了Spring MVC,提供了一种统一的...

Global site tag (gtag.js) - Google Analytics