Jakarta ee Cookie值未更改。每次获取上一个值时
我在用饼干。当你第一次打开页面时,我将cookie设置为这样Jakarta ee Cookie值未更改。每次获取上一个值时,jakarta-ee,jsf-2,Jakarta Ee,Jsf 2,我在用饼干。当你第一次打开页面时,我将cookie设置为这样 public class SessionTimeoutFilter implements Filter { public void doFilter(ServletRequest request, ServletResponse response, FilterChain filterChain) throws IOException, ServletException { Object i
public class SessionTimeoutFilter implements Filter {
public void doFilter(ServletRequest request, ServletResponse response, FilterChain filterChain)
throws IOException, ServletException {
Object isRegistered = session.getAttribute("logedin");
if (isRegistered != null) {
String isRegisteredUser = isRegistered.toString();
if (isRegisteredUser.equalsIgnoreCase(("1"))) {
sessionID = UUID.randomUUID().toString();
session.setMaxInactiveInterval(240); //4min
Cookie userCookie = getCookie(httpServletRequest, "userCookie");
if (userCookie != null) {
//Value not setting here
Cookie loginUserCookie = new Cookie("userCookie", "loginUser");
httpServletResponse.addCookie(loginUserCookie);
}
filterChain.doFilter(httpServletRequest, httpServletResponse);
}
} else {
sessionID = httpServletRequest.getRequestedSessionId();
sessionValid = httpServletRequest.isRequestedSessionIdValid();
//User open his browser
if (sessionID == null && !sessionValid) {
sessionID = UUID.randomUUID().toString();
Cookie browserCookie = new Cookie("browserCookie", sessionID);
httpServletResponse.addCookie(browserCookie);
Cookie userCookie = new Cookie("userCookie", "normal");
httpServletResponse.addCookie(userCookie);
session.setAttribute("logedin", "0");
filterChain.doFilter(httpServletRequest, httpServletResponse);
//Session expires. Each time user close the tab and session expires automatically
} else if(sessionID != null && !sessionValid) {
if (httpServletRequest.isRequestedSessionIdFromCookie()) {
Cookie userCookie = getCookie(httpServletRequest, "userCookie");
String value = userCookie.getValue();
//Each time getting normal
if (value.equalsIgnoreCase("normal")) {
session.setAttribute("logedin", "0");
filterChain.doFilter(httpServletRequest, httpServletResponse);
} else if (value.equalsIgnoreCase("loginUser")) {
}
} //end of if (httpServletRequest.isRequestedSessionIdFromCookie())
}
}
} //end of dofilter()
} //end of class SessionTimeoutFilter
第一次打开页面时,条件if(sessionID==null&&!sessionValid)
变为true,并且userCookie设置为value normal。现在,如果关闭浏览器选项卡,则再次打开页面。cookie值正常。嗯
但现在当您登录时,就会出现条件if(isRegisteredUser.equalsIgnoreCase((“1”))
。这里我尝试替换userCookie值,比如
Cookie userCookie = getCookie(httpServletRequest, "userCookie");
if (userCookie != null) {
String value = userCookie.getValue();
//delete the cokie
//userCookie.setValue("loginUser");
//userCookie.setMaxAge(0);
Cookie loginUserCookie = new Cookie("userCookie", "loginUser");
httpServletResponse.addCookie(loginUserCookie);
}
但这两种方法都不起作用。现在,在这样做之后,如果我关闭浏览器,然后再次打开页面,那么
if (value.equalsIgnoreCase("normal")) {
session.setAttribute("logedin", "0");
filterChain.doFilter(httpServletRequest, httpServletResponse);
} else if (value.equalsIgnoreCase("loginUser")) {
}
我作为userCookie值再次恢复正常。这次它应该给我值“loginUser”,因为我已将userCookie的值更改为loginUser。但我在这里变得正常了。为什么我会得到上一个值。我做错了什么?请告诉我
如果您没有定义cookie的有效期或最长使用期限,则表示感谢,因为它被视为会话cookie,当用户关闭浏览器时会自动删除。看 你必须为你的饼干设定一个有效期。见:
如果您未定义cookie的有效期或最长期限,则该cookie将被视为会话cookie,当用户关闭浏览器时,该cookie将自动删除。看 你必须为你的饼干设定一个有效期。见:
设置cookie路径,解决如下问题
Cookie userCookie = new Cookie("userCookie", "loginUser");
userCookie.setPath("/");
httpServletResponse.addCookie(userCookie);
设置cookie路径后,值被替换
谢谢设置cookie路径,解决以下问题
Cookie userCookie = new Cookie("userCookie", "loginUser");
userCookie.setPath("/");
httpServletResponse.addCookie(userCookie);
设置cookie路径后,值被替换
谢谢好的,这是会话级cookie,同意。但是,如果我想更改会话级别cookie的值,该怎么办。在“打开”页面上,我的会话级别cookie的值为“正常”,当用户登录时,我想更改会话级别cookie的值。当您只想更改cookie的值时,是否需要设置cookie的过期时间?谢谢。顺便说一下,您可以使用任何HTTP流量监视器(例如Firefox的FireBug插件)来检查在您的应用程序中设置/传输了哪些(以及如何准确地设置/传输)cookie。好的,这是会话级cookie,同意。但是,如果我想更改会话级别cookie的值,该怎么办。在“打开”页面上,我的会话级别cookie的值为“正常”,当用户登录时,我想更改会话级别cookie的值。当您只想更改cookie的值时,是否需要设置cookie的过期时间?顺便说一句,您可以使用任何HTTP流量监视器(例如Firefox的FireBug插件)来检查在您的应用程序中设置/传输了哪些(以及如何准确地设置/传输)cookie。