我看到很多开源网站,它使用不同的方法来记住他们的登录用户,有些只使用 cookie,有些使用 cookie 和数据库。每种方法之间有什么区别?什么是最好的使用方法?
我认为有安全原因,有人可以帮我理解吗?
所有“记住我”功能都需要 cookie 或其他方式在用户计算机上留下一些信息,以便您以后识别他/她。然后,您将获取这些信息,这些信息将帮助您识别服务器上的用户,并执行任何您必须做的事情来将他/她重新登录到您的系统中。
要记住用户,在他们的访问中,您必须使用 cookie。数据库无法做到这一点。
会话变量只持续一个会话。例如,如果您使用会话变量,那么您第二天就不会“记住”用户。
您需要 DB 以永久方式存储有关用户的信息。“记住我”功能本身不需要它。例如,如果您只需要知道用户的姓名,不妨将其存储在 cookie 本身中。当用户回来时,名称就在 cookie 中,可以用来说“欢迎 foo”。但是,如果页面是例如电子邮件客户端,那么您不可能将所有用户的电子邮件存储在 cookie 中;并不是说无论如何它都有意义。在这种情况下,您将从 cookie 中获取登录凭据,标记用户已登录,然后进入数据库以获取他们的电子邮件。
Cookies 不会更新,否则 Sessions 会更新,所以我认为记住用户的最佳方法是通过 Session id 和数据库