我正在将一个项目从 Rails 3 移植到 3.1。我的身份验证系统很容易切换到 ActiveRecord 中的新 has_secure_password。我遇到的唯一问题是我也使用 OmniAuth 并且我已经设置了系统,因此如果用户使用 OmniAuth 提供商之一注册,则该帐户不需要密码。我似乎无法通过 has_secure_password 覆盖 password_digest 验证设置。有没有办法关闭这些验证并编写我自己的验证,或者我是否只需要使用我的 Rails 3 版本网站中的旧手写 bcrypt 函数?
最佳答案
我最终回到使用自定义方法。但是,后来我确实意识到我应该能够使用 before_validation 回调来检查条件,然后如果它们匹配,则将 password_digest 设置为诸如“0”之类的任何简单内容。这样,摘要永远不会是空白的,但同时它也不应该验证为正确的密码,从而使他们通过 OmniAuth 登录。
如果我错了,请随时纠正我。
关于ruby-on-rails-3.1 - 使 Rails 3.1 的 has_secure_password 与 OmniAuth 配合使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7493809/