我们曾经存储了与行动记录的会话,现在正在将它移动到Rails 4中的cookie商店。我们了解到,使用cookies存储,所有会话数据都存储在除了秘密令牌之外的客户端cookie中,并且计划仅在会话中存储ID 。以下是几个问题:
user_id
和user_group_id
)是否仍保留在客户端Cookie中以供下次登录?user_group_id
,那么存储在客户端Cookie中的旧user_group_id
是否仍然占优势,并且用户下次登录时会将应用程序清除掉?当会话object
在服务器上被更改但在客户端无法相应更新(除非更改秘密令牌)时,有在线帖子谈论app爆发。 答案 0 :(得分:2)
这是cookie商店的低端产品。首先,cookie中的所有内容一旦设置就会永久存在,或者直到用户以某种方式手动删除cookie。这意味着,如果您设置了user_id和user_group_id,那么在更新或删除之前,它会在cookie中存在。这与会话不同,因为会话就像是计算机上的ram,一旦浏览器关闭,会话就会关闭它以及所有数据。
因此,这意味着当您注销用户时,您需要指定他们的Cookie会清空您不想拥有的任何内容。当您的用户登录时,您可以设置您希望用户在登录时拥有的任何内容。因此,由于会话和cookie完全是分开的,因此除非您选择制作它们,否则它们永远不会互动。因此,除非您这样做,否则您的会话永远不会将其自身转储到cookie商店中。
每次用户访问您的网站时,您都可以进行一次握手,确保Cookie在必要时与数据库匹配。否则,您可能会有不同的数据,只有在登录时更新或者没有握手的情况下,用户必须继续登录以确保它们仍然有效,这首先违背了cookie的目的。< / p>
客户端cookie存储的缺点是安全问题。根据您使用cookie存储数据的方式,一个人可能会劫持您网站上的某些cookie,并假装他们就是这些cookie。这可以通过精心设计来避免,但只是假设您的cookie商店中的任何内容都是公平的游戏,所以请小心使用它,并且只使用非秘密数据。
希望这有帮助!