
因此,你实际上想要一个“在此计算机上记住我”选项吗?这实际上与OpenID部分无关。这是一种与语言无关的方式:
首先创建至少包含
cookie_id
和user_id
列的数据库表。如有必要,还添加cookie_ttl
和ip_lock
。我猜这些列名不言而喻。在第一次登录(如果必要的话只能用“记住我”选项选中),产生一个长期的,独特的,难以猜测的密钥(这是没有办法代表了与用户)
cookie_id
和其存储在DB和一起user_id
。cookie_id
用已知的cookie
名称(例如)存储cookie 的as cookie值remember
。赋予cookie
较长的使用寿命,例如一年。在每个请求上,请检查用户是否登录。否则,请检查
cookie_id
与cookie
名称关联的cookie
值remember
。如果它在那里并且根据数据库有效,则自动登录与关联的用户,user_id
并再次推迟cookie
的年龄,如果有的话,还推迟数据库中的cookie年龄cookie_ttl
。
用Java / JSP / Servlet术语HttpServletResponse#addcookie()来添加cookie和HttpServletRequest#getcookies()获取cookie。你可以在中进行所有的首次检查,以Filter侦听所需的资源,例如,
/*或者受到更多限制。
关于会话,你在这里不需要它。它的寿命比你所需的寿命短。当它具有有效的remembercookie 时,仅使用它放置登录用户或“找到”用户。这样,Filter用户就可以只检查其在会话中的存在,而不必每次都检查cookie。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)