Я использую плагин проверки jQuery для проверки с помощью remote: "/valid_password.json"
, чтобы проверить на сервере, если представленный пароль является правильным. Проблема в том, что на сервере пароль зашифрован (с использованием Authlogic), поэтому, когда я сравниваю параметр пароля с сохраненным паролем, они не совпадают. Как я могу проверить пароль с помощью плагина JQuery Validation?Как проверить пароль с помощью authlogic и плагина JQuery Validation?
Вот код в контроллере:
def valid_password
username = params[:user_session][:username]
password = params[:user_session][:password]
@user = User.find_by_username(username)
if @user.password == password
@password_ok = true
end
respond_to do |format|
format.json { render :json => @password_ok ? "true" : "false"}
end
end
Edit: После поиска и чтения, я попытался это: (до сих пор не имели успеха)
def valid_password
username = params[:username]
password = params[:user_session][:password]
@user = User.find_by_username(username)
puts "TEST" + @user.crypted_password
@password = Authlogic::CryptoProviders::Sha512.encrypt(password)
puts "TEST" + @password
if @password == @user.crypted_password
@password_ok = true
end
respond_to do |format|
format.json { render :json => @password_ok ? "true" : "false"}
end
end
Два puts
методы дают разные Результаты. Я думаю, что я должен использовать сохраненный пароль_salt для правильного шифрования, но я не знаю, как это сделать. Первоначально я использовал неправильный параметр для «username», но теперь это исправлено.
Почему бы вам не попробовать зашифровать пароль, которые вы отправляете с AuthLogic, а затем сравнить зашифрованные версии? – jmort253
Как это сделать? –