首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >OpenID和授权逻辑-登录和密码?

OpenID和授权逻辑-登录和密码?
EN

Stack Overflow用户
提问于 2010-03-18 01:41:03
回答 1查看 594关注 0票数 1

我怎样才能摆脱验证消息告诉我:

代码语言:javascript
复制
Login is too short (minimum is 3 characters)
Login should use only letters, numbers, spaces, and .-_@ please.
Password is too short (minimum is 4 characters)
Password confirmation is too short (minimum is 4 characters)

这甚至在调用map_openid_registration之前就发生了,因此我没有任何机会用返回的注册Hash中的内容填充登录。我希望有OpenID自动注册(在登录时),而不需要用户提供登录/密码。

我也不会将此字段设置为“非必填”或“未验证”,因为我仍然需要使用旧学校的登录/密码注册。谢谢

EN

回答 1

Stack Overflow用户

发布于 2010-03-18 02:46:41

一种选择是,如果identity_url为空,则仅验证是否存在loginpassword。Authlogic为此提供了一个钩子:

代码语言:javascript
复制
openid_validation_options = { :unless => :has_openid? }
Authlogic::ActsAsAuthentic.class_eval do
  Login::Config.validates_length_of_login_field_options.merge       openid_validation_options
  Login::Config.validates_format_of_login_field_options.merge       openid_validation_options
  Password::Config.validates_length_of_password_field_options.merge openid_validation_options
  Password::Config.validates_format_of_password_field_options.merge openid_validation_options
end

class MyUserClass
  acts_as_authentic

  protected
  def has_openid?
    identity_url.present?
  end
end

或者,如果存在identity_url,则可以在保存之前设置默认的loginpassword

代码语言:javascript
复制
class MyUserClass
  acts_as_authentic
  before_create :set_login_and_password_if_openid

  protected
  def set_login_and_password_if_openid
    if new_record? && identity_url.present?
      self.login ||= identity_url
      if password.blank? && password_confirmation.blank?
        self.password = self.password_confirmation = generate_random_password
      end
    end
  end

  def generate_random_password
    ...
  end
end
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2464505

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档