2012-05-13 51 views
1

remote: "/valid_password.json"を使用して検証にjQuery検証プラグインを使用して、送信されたパスワードが正しいかどうかを確認します。問題はサーバー上でパスワードが(Authlogicを使用して)暗号化されているため、パスワードパラメータと保存されたパスワードを比較すると同じではないということです。 JQuery検証プラグインを使用してパスワードを検証するにはどうすればよいですか?ここauthlogicとjQuery検証プラグインでパスワードを検証する方法は?

は、コントローラ内のコードである:

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 

編集:検索および読み出しの後、私はこの試みた:(まだ成功して)を

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 

2つのputs方法が異なる与えます結果。私は暗号化の権利を得るために、保存されたpassword_saltを使うべきだと思いますが、どうすればいいのか分かりません。もともと私は "username"に間違ったパラメータを使用しましたが、これは修正されました。

+0

あなたがAuthLogicで送信され、その後、暗号化されたバージョンを比較しましたパスワードを暗号化しようとしないのはなぜ? – jmort253

+0

どうすればいいですか? –

答えて

3

今すぐ機能します!

私は、暗号化する前に、パスワードにpassword_saltを追加する必要がありました:

def valid_password 
    username = params[:username] 
    password = params[:user_session][:password] 
    @user = User.find_by_username(username) 
    password = "#{password}#{@user.password_salt}" 
    @password = Authlogic::CryptoProviders::Sha512.encrypt(password) 
    if @password == @user.crypted_password 
    @password_ok = true 
    end 

    respond_to do |format| 
    format.json { render :json => @password_ok ? "true" : "false"} 
    end 
end 
関連する問題