我有一個新的應用程序,根用戶創建另一個用戶,當我用模型創建用戶。Devise Rails密碼
@user = User.new(:email => params[:email], :password => params[:password], :password_confirmation => params[:password_confirmation])
@user.save!
的用戶節省了「正確」關於「encrypted_password」的價值和其他領域的表格也一樣,但是當我嘗試登錄我有一個錯誤 「無效的電子郵件或密碼」所以,當我閱讀記錄密碼是。
encrypted_password: $2a$11$wFnpiA.l9HezNXfnAGkttuu2IGIXByETytLrEkdDsa8sBFrc8Bdmq
但我用另一個密碼的實際工作的根密碼。 但在表:
encrypted_password: $2a$11$VKOAUk5pjILU1QHYmkpJSem9KKm70QJPS7Oj.nPM/pTuyu1tqZaQO
所以,我的色器件模型不保存密碼的正確的加密。
我的TestController:
class UsersController < ApplicationController
before_action :authenticate_user!
def index
@Users = User.all
end
def create
begin
@user = User.new(:email => params[:email], :password => params[:password_first], :password_confirmation => params[:password_confirmation])
@user.save!
flash[:notice] = "Usuario creado correctamente"
redirect_to action: 'index'
rescue Exception => e
flash[:alert] = "Error al crear al Usuario: " + e.message
redirect_to action: 'index'
end
end
end
我到底做錯了什麼?
問候
絕不要做'rescue Exception => e'這是一個非常糟糕的做法,它會吞噬基本的錯誤,例如'NoMethodError'和語法錯誤,並且使調試變得非常困難。使用'if @user。保存「,如果爲false則渲染新視圖,以便用戶可以更正任何驗證錯誤。不應將救援用於正常的控制流程。 – max
嗨,我只是想弄清楚這一點。 我的用戶有這個通:123 和餐桌上的密碼: $ 2A $ $ 11 VKOAUk5pjILU1QHYmkpJSem9KKm70QJPS7Oj.nPM/pTuyu1tqZaQO 但是,當我在模型上創建一個新用戶的密碼更改爲: $ 2A $ $ 11 drZIcAsXTHxyvtbvL3Wg5e0EPG4JJpsAlmxe78ohEjDSA3/nCzHoa 這就是我的問題,爲什麼該模型不使用Devise的加密。 – UlyssesMarx
好吧'救援例外=> e'除了清除墊子上的錯誤之外什麼都不做。 – max