【发布时间】:2011-08-15 17:41:54
【问题描述】:
我有一个登录页面,我想添加“记住我”功能;这样,如果用户注销并再次打开该页面,则会加载他的用户名和密码。 为此,当用户登录(并选中“记住我”)时,我会保存以下 cookie:
FacesContext facesContext = FacesContext.getCurrentInstance();
Cookie userCookie = new Cookie("vtusername", username);
userCookie.setMaxAge(3600);
((HttpServletResponse) facesContext.getExternalContext()
.getResponse()).addCookie(userCookie);
Cookie passCokie = new Cookie("vtpassword", password);
passCokie.setMaxAge(3600);
((HttpServletResponse) facesContext.getExternalContext()
.getResponse()).addCookie(passCokie);
问题是后来(在同一个会话中)我读取了 cookie,我看到 maxAge = -1;即使我将其设置为 3600 ......这是为什么呢? 另一个问题:如果我使用 userCookie.setSecure(true) 将 cookie 设置为安全,那么我无法读取它(它消失了)。
另一个问题:既然密码存储在 cookie 中,我应该如何加密它?最佳做法是什么?
提前致谢
【问题讨论】:
-
我无法为您解答,但将密码(以任何格式)保存在 cookie 中是个坏主意。任何人都可以篡改它。考虑存储用户唯一的 sessionid 或一些 id。