现在有一项目中使用了spring security3,因项目的特殊要求需要在同一浏览器页面中始终使用同一个session.而查阅spring security有关资料后,得知ss有防止session固定攻击的做法,默认会在用户登陆时创建一个新的session,
这样在用户开启系统登陆页面时是使用的一个session,而登陆系统后会由ss创建一个新的session.例如开启登陆页面login.jsp时是使用的:sessionId:272B4352F9E75846156A3EC7E3242A6C
而当用户登陆后(请求/j_spring_security_check后),session由ss改为了:sessionId:09AE96898D9BD34A1A6BF087E38865A7这种情况可以通过使用<http>中的session-fixation-protection属性来配置它的行为,将其配置为:<s:session-management session-fixation-protection="none"/>这样便在登陆后可以继续使用原来的session。这样配置虽然解决了登陆前与登陆后使用相同的session,
但是在注销后(请求/j_spring_security_logout后)session值还是被改变了.请熟悉spring security的兄弟姐妹帮忙看看,怎样在注销后保持原session呢?

解决方案 »

  1.   

    会话都是一次性的,当注销或者session过期,session就无效了!我怎么感觉你要的东西更像cookie
      

  2.   

    问题已经解决好几天了,大家来接分!spring security中有注销后是否使session失效的配置:
    <s:logout invalidate-session="false"/>
    这样配置可使注销后原session仍然有效.
      

  3.   

    不是太了解Spring的Security不过,注销用户,不是把Session里的用户信息删除么?用户这个时候再连服务器的话,仍然是那个SessionID,只是Session里没有信息了
      

  4.   

    注销了session,还要那个session.?不明白是什么需求。看来对session的理解还要向楼主多多请教?
      

  5.   

    注销后还需要使用原session确实让人费解,是因这个系统需要与另外一个桌面软件对接,系统开启时由桌面软件开启系统的链接,开启的同时桌面软件会传送几个附加的参数过来,根据这几个参数需要同步桌面软件系统的登陆状态。
    然而这几个参数现在存储在session中,为了保证系统注销后仍然可以同步登录桌面软件,所以需要在注销后仍然使用同一session.我说得可能不是很明白~~,结账去了。