2013-03-02 20 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