【问题标题】:modify the requested session id in a HttpServletRequest [duplicate]在 HttpServletRequest 中修改请求的会话 ID [重复]
【发布时间】:2013-02-17 06:38:21
【问题描述】:

如何修改HttpServletRequest 中的"requestedSessionId" 属性?

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 ?
        }

    }

我尝试这样做的原因是我的客户端应用程序不处理 Cookies..

所以会话 ID 是在 "body" 中发送的,这就是我想从中获取我的 JSESSIONID 并将其设置在请求中以便稍后由 SpringSecurityFilterChain 处理的位置。

【问题讨论】:

  • 如果客户端不接受cookie,为什么不使用url-encoding?
  • 因为我不知道这是什么 :) 它允许在 URL 中传递会话 ID 吗?
  • 当客户端不支持cookies时,会话ID编码在URL中。你需要做的就是使用这个api:docs.oracle.com/javaee/6/api/javax/servlet/http/…
  • 是的,我只是用;jsessionid= 参数发现了这一点。谢谢

标签: java servlets servlet-filters


【解决方案1】:

你不能这样做。

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

【讨论】:

  • 谢谢。我的目标是stackoverflow.com/questions/15096764/…,我能想到的就是从请求中手动设置会话 ID。
  • 如何使用 URL 来传递会话 ID? disable-url-rewriting="false" 似乎没有任何好处(使用禁用 cookie 的浏览器进行测试)?
猜你喜欢
  • 2017-05-24
  • 1970-01-01
  • 2011-01-19
  • 2014-03-29
  • 2016-10-03
  • 1970-01-01
  • 2019-10-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多