Rails 3.1。使用安全密码在控制台中创建一个用户

时间:2011-10-27 17:01:15

标签: ruby-on-rails ruby-on-rails-3

我想创建一个用户(admin),我想使用控制台(没有用户注册模型)。我使用RailsCasts的解决方案(http://railscasts.com/episodes/270-authentication-in-rails-3-1)。 但是我有一个问题:当我在控制台中执行User.create(...,:password =>“pass”)时,我的密码存储在数据库中而没有编码(如“pass”)。我无法使用我的数据登录。

如何从控制台创建用户? :)

1 个答案:

答案 0 :(得分:21)

直接来自Rails API

# Schema: User(name:string, password_digest:string)
class User < ActiveRecord::Base
  has_secure_password
end

user = User.new(:name => "david", :password => "", :password_confirmation => "nomatch")
user.save                                                      # => false, password required
user.password = "mUc3m00RsqyRe"
user.save                                                      # => false, confirmation doesn't match
user.password_confirmation = "mUc3m00RsqyRe"
user.save                                                      # => true
user.authenticate("notright")                                  # => false
user.authenticate("mUc3m00RsqyRe")                             # => user

您需要在哈希中包含:password_confirmation => "pass

是的,所以看看has_secure_password你要执行BCrypt::Password.create(unencrypted_password)来获取它。您需要bcrypt-ruby gem来执行上述操作。