我在我的网络应用程序中实现了“记住我”功能。我使用包含使用 RSA 加密的用户名/密码的 cookie 来执行此操作。
我登录时添加cookie;如果然后我注销(不关闭浏览器),则 cookie 读取正常,并且在登录页面中我看到用户名/密码已经输入。但是如果我关闭浏览器;或关闭选项卡并再次运行应用程序,当读取 cookie 时,读取的唯一 cookie 是 JSESSIONID。((HttpServletRequest)facesContext.getExternalContext().getRequest()).getCookies();
即使我可以在浏览器中看到它,带有凭据的 cookie 也不在返回的数组
中。这是为什么?
这是创建 cookie 的代码:
String credentials = username + "?" + password;
Cookie c = CookieHandler.getInstance().createCookie("vtcred", credentials, rememberMe);
FacesContext facesContext = FacesContext.getCurrentInstance();
((HttpServletResponse) facesContext.getExternalContext().getResponse()).addCookie(c);
和方法createCookie:
public Cookie createCookie(String name, String value, boolean rememberMe) {
value = encript(value);
Cookie credCookie = new Cookie(name, value);
credCookie.setHttpOnly(true);
if(rememberMe) {
credCookie.setMaxAge(86400);
}
else {
credCookie.setMaxAge(0);
}
return credCookie;
}
编辑:我将 cookie 的最大年龄设置为一天;在浏览器中我可以看到 cookie 明天到期,所以这不是问题
在此先感谢,达米安
edit2:这很奇怪,但现在似乎可以工作了。我会继续测试并通知。谢谢。