gpt4 book ai didi

jsf - JSESSIONID cookie 何时添加到响应中

转载 作者:行者123 更新时间:2023-12-01 09:55:39 25 4
gpt4 key购买 nike

我有一个 JSF 2.0 应用程序,我们称它为“MyApp”,带有一个 SessionScoped bean,它使用以下代码获取 session 并在初始化时设置路径...

HttpServletRequest request = (HttpServletRequest)FacesContext.getCurrentInstance().getExternalContext().getRequest();   //Get request from external context
HttpSession session = request.getSession(false); //Get session and don't create one if it doesn't exist
session.getServletContext().getSessionCookieConfig().setPath(""); //Set the path in the session's cookie

我的问题是更新的路径 ("") 不会显示在响应 session cookie 中,JSESSIONID,直到对应用程序的第二个请求。第一个请求在响应中使用默认路径获取 JSESSIONID cookie,其中包括应用程序的根上下文(“/MyApp”)。如果我重新加载页面,第二个请求将得到一个包含更新路径 ("") 的 JSESSIONID cookie 的响应。

我似乎找不到任何关于何时创建默认 JSESSIONID cookie 并将其添加到响应的文档。我不确定是否在第一个响应的 JSESSIONID cookie 中设置了更新的 session 路径,或者它是否被页面的默认 JSESSIONID cookie 设置和覆盖。

问题:

  1. 默认的 JSESSIONID cookie 何时添加到响应中?
  2. 是否可以禁止创建页面的默认 JSESSIONID cookie?

最佳答案

When does the default JSESSIONID cookie get added to the response?

首次创建 HTTP session 时。例如。当 JSF 需要将新创建的 session 作用域 bean 放在那里时。因此,如果您在这样一个应该操纵 session 的 bean 中编写一些代码,那么您基本上已经来不及了。

您的代码片段也是有力的证据。如果 session 真的没有创建,那么 request.getSession(false) 会返回 null 并且随后调用 session.getServletContext() 会抛出一个 NullPointerException 并且您会问一个非常不同的问题。


Is it possible to disable the page's default JSESSIONID cookie from being created?

我相信你问错了问题。您实际上想问的是如何以正确的方式设置 session cookie 路径。

您应该在 web.xml 中配置 session cookie 路径,如下所示:

<session-config>
<cookie-config>
<path>/</path>
</cookie-config>
</session-config>

如果您确实出于某些未在问题中详细说明的不明原因而打算以编程方式执行此操作,那么您应该在 首次创建 HTTP session 之前执行此操作。换句话说,您绝对不应该在 session 范围内的 JSF 托管 bean 中执行此操作,也不应该从 HttpSession 本身获取所需的 ServletContext

最明智的地方是 servlet context listener或者,如果你真的需要它是“JSF-ish”,那么一个急切初始化的应用程序范围的 bean。请注意,这是一个应用程序范围设置,而不是 session 范围设置。它是 ServletContext(而不是 HttpSession)的一个属性,已经暗示了这一点。因此,一旦您设置了它,它就会影响所有新创建的 session cookie。 Depending on the concrete functional requirement which you told nothing about ,可能有更好的方法。例如。一个额外的 cookie。

关于jsf - JSESSIONID cookie 何时添加到响应中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28423938/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com