我应该接受使用AuthLogic的加密密码吗?

时间:2013-07-15 01:30:48

标签: ruby-on-rails authlogic

基本上问题就是问。

verify_password_method状态的AuthLogic文档:

  

模型中用于验证密码的方法的名称。这应该是一个实例方法。它还应准备好接受原始密码和密码。

我想支持这一点,因为它允许我维护系统当前的伪装行为,而不像我们过去那样存储纯文本密码。但是,在我看来,允许对数据库中的crypted_password进行简单的字符串比较与存储常规纯文本密码一样糟糕。

我在这里遗漏了什么,或者是否有其他方法可以在AuthLogic中接受加密密码?

作为参考,这就是我写valid_password?方法的方法:

def valid_password?(password, check_from_database = nil)
  if password == self.crypted_password
    true
  else
    super(password, check_from_database)
  end
end

1 个答案:

答案 0 :(得分:0)

好的,事实证明,有一种更简单的方法可以做到这一点(虽然它看起来非常难以记录,并且没有出现在谷歌搜索如何实现这一目标)。

Authlogic::Session::Base.new(@user, true)

该行允许在不检查凭据的情况下创建会话。显然你应该小心这一点,因为它假定用户已经正确识别了自己 - 对于我的用法,因为有一个检查以确保当前用户是管理员用户,这是安全的。