【问题标题】:Ruby on Rails: perishable_token without Authlogic?Ruby on Rails:没有 Authlogic 的 perishable_token?
【发布时间】:2011-08-12 16:31:44
【问题描述】:
我使用http://ruby.railstutorial.org/ 中实现的注册和登录,没有任何宝石进行身份验证。但是,现在我试图通过向用户发送随机生成的 URL 来激活用户,我在这里遇到了麻烦。我在网上搜索过,看到一些人使用 Authlogic 的 perishable_token 来生成它,但由于我根本没有使用过 Authlogic,我想知道是否有一种方法可以在不使用任何其他 gem 的情况下生成它。 Rails 专业人士有什么建议吗?谢谢
【问题讨论】:
标签:
ruby-on-rails
authentication
authlogic
activation
【解决方案1】:
有很多方法可以实现这一点。您首先必须决定如何生成令牌。您可以简单地使用用户的一些数据(如电子邮件)和另一块种子数据(如 Time.now)创建一个 md5hash,并将其存储为用户的“perishable_token”。
然后您可以覆盖 perishable_token 的读取器访问器以生成另一个令牌并更新用户模型。
before_save :generate_perishable_token
def generate_perishable_token
self.perishable_token = Digest::MD5.hexdigest("#{Time.now}-#{self.email}")
end
def perishable_token
generate_perishable_token
save
end
以上只是一些快速的伪代码,但应该能够理解这一点。