Rails 4,Devise记住令牌

tom*_*ave 4 ruby ruby-on-rails devise ruby-on-rails-4

我试图找到设计如何产生remember_token.

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

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

dou*_*asr 9

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

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

你可以在那里看到remember_token属性/方法,如果模型响应它(它是以前版本中存在实际DB属性的遗留物)或者没有从authenticatable_salt方法中提取值.

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

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

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