代码之家  ›  专栏  ›  技术社区  ›  ohho

如何在Rails设计中自动生成密码?

  •  30
  • ohho  · 技术社区  · 14 年前

    我正在尝试如何设计工作与我的一个项目的用户身份验证。有一个用户要求,他们的管理员应该能够生成一批用户名和用户的密码时,然后管理员将电子邮件新的用户名和密码给他的用户。

    4 回复  |  直到 14 年前
        1
  •  80
  •   typeoneerror    10 年前

    使用 Devise.friendly_token

    password_length = 6
    password = Devise.friendly_token.first(password_length)
    User.create!(:email => 'someone@something.com', :password => password, :password_confirmation => password)
    

    仅供参考: 设计.u代币 password_length 使用 String#first Rails提供的方法。

        2
  •  6
  •   Dave Rapin    10 年前

    一种选择是使用设计生成令牌. 即。

    password = User.generate_token('password')
    User.create!(:email => 'someone@something.com', :password => password, :password_confirmation => password)
    

    这个选项已经有很长一段时间没有出现在designe中了。请参考另一个答案(友好的\u令牌)。

        3
  •  4
  •   Tarek N. Elsamni    6 年前

    devise-security 宝石和宝石 password_complexity 要求如下:

    config.password_complexity = { digit: 1, lower: 1, upper: 1 }

    Devise.friendly_token.first(password_length) 要生成密码,并不总是保证获得与您的复杂性匹配的密码。

    密码复杂性 并将生成一个随机投诉密码:

    class PasswordGenerator
      include ActiveModel::Validations
      validates :password, 'devise_security/password_complexity': Devise.password_complexity
      attr_reader :password
    
      def initialize
        @password = Devise.friendly_token.first(Devise.password_length.first) until valid?
      end
    end
    

    PasswordGenerator.new.password # "qHc165ku"

        4
  •  0
  •   Craig Monson    14 年前

    我尝试了generate\u令牌,但它并没有像您所想的那样(查看文档)

    (我正在使用rails 3.0.5和Desive 1.1.7)

    我发现,当你这样做的时候,designe会在后台为你生成所有的东西:

    User.create!(:email => "me@example.com", :password => "password")
    

    designe应该创建加密的密码,并为您添加salt。(打开一个控制台并在那里试用)