使用弹簧安全和弹簧MVC。我在unAuthenticated请求中保留了session属性中的数据(security:none in spring security)。我尝试打印会话ID。之后我登录了应用程序。这里创建了新会话。我尝试打印会话ID。两者都不同。但是当我访问放置在session属性中的数据时。它存在。根据我的理解,登录后创建新会话,数据应该丢失或者Spring是否正在共享会话属性? 下面是代码。
@RequestMapping(value = "/persistFKey")
public @ResponseBody String persistFKey(HttpServletRequest req,HttpServletResponse res,ModelMap modelMap) {
System.out.println("SEssion ID ----persistKey ----"+request.getSession().getId());
String fkey = request.getParameter("fkey");
modelMap.addAttribute("fkey", fkey);
return "success";
}
在spring security xml中,我给了
<sec:http security="none" pattern="/portal/persistFKey" />
登录后,在调用新页面时,我将数据保存在会话属性
中@RequestMapping(value = "/renderScreen")
public String renderScreen(HttpServletRequest request, Model model,
@ModelAttribute("srceenModel") ScreenModel srceenModel,ModelMap modelMap) {
System.out.println("SEssion ID ----renderBooking----"+request.getSession().getId());
System.out.println("SessionKey persisted --------"+(String)modelMap.get("fkey"));
}
两者都在同一个弹簧MVC控制器中。
答案 0 :(得分:0)
默认情况下,Spring Security会在登录时更改用户的会话ID,以避免Session Fixation次攻击。
将migrate用户的旧会话数据发送到新会话数据也足够了。
您可以通过<session-management session-fixation-protection="..." />