2011-10-27 9 views
6

Voglio creare un utente (admin) e voglio usare console (senza modello di registrazione utente). Io uso la soluzione da RailsCasts (http://railscasts.com/episodes/270-authentication-in-rails-3-1). Ma ho un problema: quando eseguo User.create (...,: password => "pass") in console la mia password è memorizzata nel database senza encription (come "pass"). E non riesco ad accedere con i miei dati.Rails 3.1. Creare un utente in console con password sicura

Come posso creare un utente dalla console? :)

risposta

21

Direttamente dalle 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 

È necessario includere nella vostra :password_confirmation => "pass hash!

Giusto, quindi dare un'occhiata a has_secure_password si desidera eseguire BCrypt::Password.create(unencrypted_password) per ottenerlo. Avrai bisogno della gemma bcrypt-ruby per fare quanto sopra.

+0

Grazie! Ho dimenticato BCrypt, funziona bene anche senza la conferma della password :) –

+0

Impressionante, felice di sentirlo =) –