输入正确的用户名密码后,还是跳转到druid的登陆页面,目前用spring-session与redis集群来存储session,如果关闭spring-session可以正常访问
ezykj2lf1#
这个是 spring session的坑,跟踪CookieHttpSessionStrategy发现,它的getRequestedSessionId()方法直接从request里面取cookie,但这里的request传过来的是SessionRepositoryRequestWrapper Package 类,但在wildfly下,sessionId是经过加工了的,格式:【SessionId】-【nodeId】,所以想解析正确的SessionId,必须从 Package 类中取出 Package 前的request对象,调用getRequestedSessionId()返回。所以修改CookieHttpSessionStrategy的getRequestedSessionId方法即可。public String getRequestedSessionId(HttpServletRequest request) { HttpServletRequest httpServletRequest=(HttpServletRequest)((HttpServletRequestWrapper)request).getRequest(); String sessionId=httpServletRequest.getRequestedSessionId(); if(StringUtils.isNotBlank(sessionId)){ return sessionId; } Map<String, String> sessionIds = this.getSessionIds(request); String sessionAlias = this.getCurrentSessionAlias(request); return (String)sessionIds.get(sessionAlias); }
public String getRequestedSessionId(HttpServletRequest request) { HttpServletRequest httpServletRequest=(HttpServletRequest)((HttpServletRequestWrapper)request).getRequest(); String sessionId=httpServletRequest.getRequestedSessionId(); if(StringUtils.isNotBlank(sessionId)){ return sessionId; } Map<String, String> sessionIds = this.getSessionIds(request); String sessionAlias = this.getCurrentSessionAlias(request); return (String)sessionIds.get(sessionAlias); }
fcy6dtqo2#
登录成功后 跳转 druid/index.html 没有 携带cookie,使用spring-session cookie 策略 无法获取登录信息 ,输入正确的用户名密码后,还是跳转到druid的登陆页面 。 能带上cookie吗。
2条答案
按热度按时间ezykj2lf1#
这个是 spring session的坑,跟踪CookieHttpSessionStrategy发现,它的getRequestedSessionId()方法直接从request里面取cookie,但这里的request传过来的是SessionRepositoryRequestWrapper Package 类,但在wildfly下,sessionId是经过加工了的,格式:【SessionId】-【nodeId】,所以想解析正确的SessionId,必须从 Package 类中取出 Package 前的request对象,调用getRequestedSessionId()返回。所以修改CookieHttpSessionStrategy的getRequestedSessionId方法即可。
public String getRequestedSessionId(HttpServletRequest request) { HttpServletRequest httpServletRequest=(HttpServletRequest)((HttpServletRequestWrapper)request).getRequest(); String sessionId=httpServletRequest.getRequestedSessionId(); if(StringUtils.isNotBlank(sessionId)){ return sessionId; } Map<String, String> sessionIds = this.getSessionIds(request); String sessionAlias = this.getCurrentSessionAlias(request); return (String)sessionIds.get(sessionAlias); }
fcy6dtqo2#
登录成功后 跳转 druid/index.html 没有 携带cookie,使用spring-session cookie 策略 无法获取登录信息 ,输入正确的用户名密码后,还是跳转到druid的登陆页面 。 能带上cookie吗。