加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – 将现有密码哈希转换为Devise

发布时间:2020-12-16 19:54:46 所属栏目:百科 来源:网络整理
导读:我正在尝试将现有的管理模型转换为Devise.我们已经有一个密码哈希,但显然不是Devise兼容的.我想做的是接受登录表单,并根据加密的密码检查提供的密码.如果不正确,请使用旧哈希来检查密码,如果匹配,请清空旧的password_hash字段,并将Devise的密码设置为提供的
我正在尝试将现有的管理模型转换为Devise.我们已经有一个密码哈希,但显然不是Devise兼容的.我想做的是接受登录表单,并根据加密的密码检查提供的密码.如果不正确,请使用旧哈希来检查密码,如果匹配,请清空旧的password_hash字段,并将Devise的密码设置为提供的密码并保存模型.

什么是最好的前进方式?我怀疑我需要重写某些东西,也许在一个自定义的控制器中,但是我并不完全确定如何进行.

解决方法

您可以让Devise使用新的密码方案进行加密密码的“辛勤工作”,如 https://gist.github.com/1704632所示:
class User < ActiveRecord::Base
  alias :devise_valid_password? :valid_password?

  def valid_password?(password)
    begin
      super(password)
    rescue BCrypt::Errors::InvalidHash
      return false unless Digest::SHA1.hexdigest(password) == encrypted_password
      logger.info "User #{email} is using the old password hashing method,updating attribute."
      self.password = password
      true
    end
  end
end

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读