在rails 4中注销后,是否所有会话数据都保留在客户端cookie中?

时间:2015-04-08 13:53:11

标签: ruby-on-rails session ruby-on-rails-4 cookies

我们曾经存储了与行动记录的会话,现在正在将它移动到Rails 4中的cookie商店。我们了解到,使用cookies存储,所有会话数据都存储在除了秘密令牌之外的客户端cookie中,并且计划仅在会话中存储ID 。以下是几个问题:

  1. 用户退出后,所有会话数据(例如user_iduser_group_id)是否仍保留在客户端Cookie中以供下次登录?
  2. 例如,如果为用户分配了新的user_group_id,那么存储在客户端Cookie中的旧user_group_id是否仍然占优势,并且用户下次登录时会将应用程序清除掉?当会话object在服务器上被更改但在客户端无法相应更新(除非更改秘密令牌)时,有在线帖子谈论app爆发。
  3. 除了4kb大小限制和仅使用cookie存储的ID(会话)之外,在将会话从db移动到cookie存储时还有其他事项(或缺点)需要考虑吗?

1 个答案:

答案 0 :(得分:2)

这是cookie商店的低端产品。首先,cookie中的所有内容一旦设置就会永久存在,或者直到用户以某种方式手动删除cookie。这意味着,如果您设置了user_id和user_group_id,那么在更新或删除之前,它会在cookie中存在。这与会话不同,因为会话就像是计算机上的ram,一旦浏览器关闭,会话就会关闭它以及所有数据。

  1. 因此,这意味着当您注销用户时,您需要指定他们的Cookie会清空您不想拥有的任何内容。当您的用户登录时,您可以设置您希望用户在登录时拥有的任何内容。因此,由于会话和cookie完全是分开的,因此除非您选择制作它们,否则它们永远不会互动。因此,除非您这样做,否则您的会话永远不会将其自身转储到cookie商店中。

  2. 每次用户访问您的网站时,您都可以进行一次握手,确保Cookie在必要时与数据库匹配。否则,您可能会有不同的数据,只有在登录时更新或者没有握手的情况下,用户必须继续登录以确保它们仍然有效,这首先违背了cookie的目的。< / p>

  3. 客户端cookie存储的缺点是安全问题。根据您使用cookie存储数据的方式,一个人可能会劫持您网站上的某些cookie,并假装他们就是这些cookie。这可以通过精心设计来避免,但只是假设您的cookie商店中的任何内容都是公平的游戏,所以请小心使用它,并且只使用非秘密数据。

  4. 希望这有帮助!