ruby-on-rails-3.1 - 使 Rails 3.1 的 has_secure_password 与 OmniAuth 配合使用

标签 ruby-on-rails-3.1 omniauth

我正在将一个项目从 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/

相关文章:

ruby-on-rails - 升级到 Rails 3.1.1 时出错

ruby-on-rails - 如何为帖子建立标记系统?

ruby-on-rails - JWT::InvalidIatError at/user/auth/google_oauth2/callback 无效的 iat

ruby-on-rails - 设计 + OmniAuth Saml:ActionController::InvalidAuthenticityToken

ruby-on-rails - Rails 设计omniauth : cannot keep facebook data in user session

ruby-on-rails - resque和redis等待变量被设置

ruby-on-rails - Ruby 正则表达式的价格

gem - 为什么我必须将 execjs 和 therubyracer 添加到我的 gemfile 才能让 rails3.1 工作?

ruby-on-rails-3.1 - 无法从 Linkedin 对您进行身份验证,因为 "Invalid credentials"

ruby-on-rails - Rspec:在 Devise::OmniauthCallbacksController 子类中测试重定向