Rails 4,Devise记住令牌

时间:2014-01-21 12:13:49

标签: ruby-on-rails ruby ruby-on-rails-4 devise

我想了解devise如何生成remember_token

我注意到它是生成的(并存储在cookie中),即使DB中没有令牌列来保存它。我想了解它的工作原理,但我找不到合适的位置。

有人能指出我的源代码文件吗?

1 个答案:

答案 0 :(得分:9)

该值来自可记忆模型中的rememberable_value方法。

https://github.com/plataformatec/devise/blob/master/lib/devise/models/rememberable.rb#L75

如果模型对它做出响应,你可以看到 remember_token 属性/方法(这是以前版本中存在实际数据库属性的遗留问题),或者它没有提取值来自authenticatable_salt方法。

如果您使用的是database_authenticatable模块,则使用的authenticatable_salt方法位于:

https://github.com/plataformatec/devise/blob/master/lib/devise/models/database_authenticatable.rb#L132

该方法然后返回用户加密密码的前29个字符,然后在remember_token中使用。