0

基本上正如问题所要求的那样。

状态的 AuthLogic 文档verify_password_method

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

我想支持这一点,因为它允许我保持系统当前的伪装行为,而无需像过去那样存储纯文本密码。但是,在我看来,允许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
4

1 回答 1

0

好的,事实证明有一种更简单的方法可以做到这一点(尽管它似乎非常无证,并且没有通过谷歌搜索来实现这一点)。

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

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

于 2013-07-15T06:30:58.780 回答