【问题标题】:JSESSIONID cookie has '.node0' postfix while the server side sessionID doesn'tJSESSIONID cookie 有 '.node0' 后缀,而服务器端 sessionID 没有
【发布时间】:2018-03-19 16:06:27
【问题描述】:

我正在使用 shiro 进行会话管理。当我在服务器端获取 sessionID 时,它是这样的:

node0sicwaberf0z59o8qpehfpasf6

但是,当我在浏览器中检查 JSESSIONID 时,此值会保存为:

node0sicwaberf0z59o8qpehfpasf6.node0

这个 .node0 到底是什么,为什么它会附加到 sessionID 的末尾

值得一提的是,我使用 jetty 9 作为我的网络服务器。

【问题讨论】:

    标签: java cookies jetty shiro


    【解决方案1】:

    Jetty 会话 id 的格式(9.3 及更高版本)是 worker 名称(例如 node0)、随机生成的唯一 ID(例如 123x0dsf)和根据org.eclipse.jetty.server.session.DefaultSessionIdManager 的 .worker 名称(例如 .node0)。

    检查DefaultSessionIdManager#renewSessionIdDefaultSessionIdManager#getExtendedId

    【讨论】:

      【解决方案2】:

      在 Jetty 9.4 中对会话管理进行了重大改进。 当我将码头从 9.3.25.x 升级到 9.4.15.x 时,我遇到了同样的问题。由于在 JSESSIONID 中添加了工作人员名称,在我的应用程序中,发生在 Jetty 之外的一些标头验证开始失败。 由于我只有一个码头节点,我选择从会话 ID 中删除节点 ID。 我设法通过在start.ini 中添加以下几行来删除.node 后缀

      jetty.sessionIdManager.workerName=
      etc/sessions/id-manager.xml
      

      默认情况下,Jetty 9.4.x 将在启动时使用默认设置实例化 DefaultSessionIdManager 和 HouseKeeper 的单个实例。以上配置覆盖了默认配置中的workerName。

      Reference

      【讨论】:

        【解决方案3】:

        我知道现在很晚了,但也许它会对某人有所帮助。

        我正在使用 maven-jetty-plugin (9.4.6.v20170531),最终遇到类似的问题 - Session.getId() 返回一个值,但 ServletContainer 实际将 JSESSIONID cookie 设置为 value+'.node0'

        我不以任何方式使用集群,也根本没有配置。这是码头服务器的默认行为。

        我设法通过在jetty-env.xml 中添加以下行来删除.node 后缀:

        <Get name="sessionHandler">
          <Call name="getServer" id="srv"></Call>
          <Set name="sessionIdManager">
            <New class="org.eclipse.jetty.server.session.DefaultSessionIdManager">
                <Arg><Ref refid="srv" /></Arg> 
                <Set name="workerName" type="String"></Set>
            </New>
          </Set>
        </Get>
        

        这里有相关source code of DefaultSessionIdManager

        【讨论】:

          【解决方案4】:

          这是一个码头会话 ID,您可以在此处阅读更多信息: http://jetty.4.x6.nabble.com/Some-questions-regarding-upgrade-9-3-gt-9-4-td4966096.html

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2021-06-16
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2011-10-18
            • 2019-05-30
            • 2016-09-10
            • 2011-12-01
            相关资源
            最近更新 更多