2013-03-02 89 views
1

如何修改HttpServletRequest中的"requestedSessionId"属性?在HttpServletRequest中修改请求的会话ID

public class MySecurityContextPersistenceFilter implements Filter { 

    @Override 
    public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException { 

     if (req instanceof HttpServletRequest) { 
      HttpServletRequest httpServletRequest = (HttpServletRequest) req; 
      httpServletRequest.getRequestedSessionId(); 
      //Modify this value ? 
     } 

    } 

为什么我想这样做的原因是,我的客户端应用程序不处理饼干..

所以会话ID在"body",而不是被发送,而这也正是我想获取我的JSESSIONID并将其设置在请求中,以便稍后处理SpringSecurityFilterChain

+0

如果客户端不接受cookies,为什么不使用url编码? – Cratylus 2013-03-02 22:30:51

+0

Bacause我不知道这是什么:)它是否允许在URL中传递会话ID? – 2013-03-02 22:37:28

+1

当客户端不支持cookie时,会话ID将在URL中进行编码。您需要做的就是使用此api:http://docs.oracle.com/javaee/6/api/javax/servlet/http/HttpServletResponse .html#encodeURL%28java.lang.String%29 – Cratylus 2013-03-03 11:35:37

回答

2

你不能那样做。

这里JAVA Change JSESSIONID cookie我们走过这个话题,有部分解决方案,但都取决于你的目标。

+0

谢谢。我的目标是这个http://stackoverflow.com/questions/15096764/implementing-spring-security-with-java-client,我所能想到的是从请求手动设置会话ID。 – 2013-03-02 22:32:01

+0

我该如何使用URL来传递会话ID呢? 'disable-url-rewriting =“false”'似乎没有什么好处(用浏览器禁用cookies)? – 2013-03-03 00:35:51