设计:用户退出后如何使用remember_me cookie?

Ahm*_*mza 5 ruby cookies ruby-on-rails devise ruby-on-rails-4

我正在处理一个Rails 4.2应用程序并使用devisegem进行身份验证.

对于remember_me功能,设计会生成一个cookie remember_user_token,之后会被破坏sign_out.

有没有这样的方法Devise不应该破坏remember_user_token

我试着false在下面configinitializer

config.expire_all_remember_me_on_sign_out = false

但它没有帮助.

我在注销后需要cookie,以便填充登录表单.

请帮忙.

谢谢

Bha*_*han -1

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

  1. 因此,这意味着当您注销用户时,您需要指定他们的 cookie 清空您不希望其拥有的任何内容。当您的用户登录时,您可以设置您希望用户在登录时拥有的任何内容。因此,由于会话和 cookie 是完全独立的事物,因此除非您选择创建它们,否则它们永远不会一起交互。因此,除非您让它这样做,否则您的会话永远不会将其自身转储到 cookie 存储中。

  2. 每次用户访问您的网站时,您都可以进行一次握手,以确保 cookie 与数据库匹配(如有必要)。否则,您可能会拥有不同的数据,哪些数据仅在登录时更新,哪些数据不更新,并且如果没有握手,用户将必须继续登录以确保它们仍然有效,这首先就违背了拥有 cookie 的目的。

  3. 客户端 cookie 存储的缺点是安全问题。根据您使用 cookie 存储数据的方式,某人可能会劫持您网站上的某些人的 cookie 并假装他们是他们。这可以通过仔细设计来避免,但只要假设 cookie 存储中的任何内容对每个人来说都是公平的,因此请谨慎使用它,并且仅用于非秘密数据。

希望这可以帮助!