Cookies 如何在JSF2.0中实现自动登录功能

Cookies 如何在JSF2.0中实现自动登录功能,cookies,jsf-2,Cookies,Jsf 2,我有一个登录表单,上面有一个选项“让我登录”。如果用户选择此选项并按下登录按钮。然后我想我可以将用户名和密码保存在cookie中,并将其发送到用户计算机。然后,当用户再次打开站点时,我可以检查用户计算机中是否存在cookie,如果存在,则从cookie中获取用户名和密码并登录用户。但问题是如何将cookie发送到用户计算机?据我所知。你可以这样设置cookie Cookie userCookie = new Cookie("userCookie", "loginUser"); //session

我有一个登录表单,上面有一个选项“让我登录”。如果用户选择此选项并按下登录按钮。然后我想我可以将用户名和密码保存在cookie中,并将其发送到用户计算机。然后,当用户再次打开站点时,我可以检查用户计算机中是否存在cookie,如果存在,则从cookie中获取用户名和密码并登录用户。但问题是如何将cookie发送到用户计算机?据我所知。你可以这样设置cookie

Cookie userCookie = new Cookie("userCookie", "loginUser");
//sessionCookie.setMaxAge(60 * 15);
userCookie.setPath("/");
httpServletResponse.addCookie(userCookie);
如果我没有设置
setMaxAge
,那么它是一个浏览器级cookie,即当用户关闭浏览器时,cookie将被删除。如何将cookie发送到用户计算机并从用户计算机获取自动登录


谢谢

不管怎样,你都不应该,永远,永远不要在cookie中存储密码

这是一篇关于Persistent cookies的好文章:

文章的要点是:

前提

  • Cookie易受攻击。常见的浏览器cookie盗窃 漏洞和跨站点脚本攻击,我们必须接受这一点 饼干不安全
  • 持久登录Cookie本身具有访问网站的充分身份验证。它们相当于一个有效的用户名和密码
  • 用户重复使用密码。因此,任何可以恢复用户密码的登录cookie都比无法恢复的cookie具有更大的潜在危害
  • 将持久性cookie绑定到特定IP地址会使它们在许多常见情况下不是特别持久
  • 用户可能希望同时在不同机器上的多个web浏览器上拥有持久cookie

作者建议将用户名与大随机数关联,这是一种常见做法。

hhmmm谢谢。该网站提到,
cookie应该包括用户的用户名,后跟一个分隔符,后跟一些大的随机数(128位似乎大得令人难以置信,足以让人接受)。服务器保留一个数字->用户名关联表。
。我知道用户在文本字段中输入的用户名(比如Basit)。所以我所理解的是,制作了一个类似于
Basit-67*98
的饼干。那么如何实现该表,即,
服务器保留一个数字->用户名关联的表
。是指在创建cookie后,也将此名称保存在数据库中,即,
Basit-67*98
,当用户下次打开网站时,我将获取cookie,然后在数据库中检查此cookie值,如果存在,则登录用户,然后再次更改名称,如
Basit-45*23
?是吗?关于这个数字的要点是它必须是随机的。数字越大,如果某个人知道你的用户名,他就越不可能“猜”出一个有效的数字。该表可以由三列组成:用户名、编号和过期日期。当用户进入站点时,cookie被传输。用户名和数字是从中提取的(通过在分隔符char处拆分它们)。服务器将查找是否有用户名和号码组合的条目。如果未达到到期日期,cookie将被视为有效->服务器日志用户inHmm表示流应该类似于,
i have a form,用户在字段中输入其名称和密码,并选中保持我登录复选框。单击登录按钮。当时我有用户名和密码。如果用户选中该复选框,那么我将创建一个类似于
Basit randomNumber(比如1789*6542 with java.util.random)
的cookie,并将其发送给客户端,同时将Basit cookie保存在一个数据库中,并使用您提到的列名。下次当用户打开站点时,我会检查cookie,如果cookie存在,然后与数据库确认,如果匹配,然后登录用户
是否存在?是否可能重复。您可以查看附加的实现链接。