4

jQuery検証を使用して現在のパスワードを確認できません。DevisegemとjQuery検証を使用しています。Firebugによると:

問題は私のコントローラーにあります:

def checkpass
 user = User.find_by_email(params[:user][:email])
 respond_to do |format|
 if user && user.authenticate(params[:user][:password])
    format.json { render :json => @user }
 end

終わり

このコードでFirebugは私にエラーを与えます

 406 Not Acceptable

end

checkemailの一意性アクションの例:

 def checkemail
  @user = User.find_by_email(params[:user][:email])
   respond_to do |format|
   format.json { render :json => !@user }
  end
end

私のjs:

$("#edit_password").validate({
   "user[current_password]":{
            required: true,
            minlength: 6,
            remote: {
          url: "http://127.0.0.1:3000/checkpass"
          }
 ...
 })

およびHTML:

   <input type="password" size="30" name="user[current_password]" id="user_current_password" class="valid">

誰かがそれを行う方法を提案できますか?

4

3 に答える 3

9

Railsバージョン4を使用していますが、user.authenticateを実行しようとすると、不明な方法というエラーが表示されたため、パスワードが有効かどうかを確認する別の方法を見つけました。

valid_password?(current_password)

他の人にも役立つように共有しようと思いました。

于 2014-06-19T11:10:53.260 に答える
5

関数check_passのコントローラーで

  user = User.find_by_email(params[:user][:email])
  respond_to do |format|
     if user && user.authenticate(params[:user][:password])
        format.json { render :json => @user }
     end
  end
于 2012-09-26T10:07:25.617 に答える
0

パスワードはプレーンテキスト形式で保存されないため、ソルトハッシュであるため、ユーザーはパスワードを使用して見つけることができません。

パスワードが有効かどうかを認証できますので、ソルトハッシュは次のように機能します

  • 暗号化された文字列=plaintext(password)+ hashing algo(encrypt)

  • いくつかのランダムな文字列(塩)+暗号化された文字列が一致するかどうかをチェックユーザーでwarden.authenticateまたはauthenticate(ドキュメントをチェック)メソッドを使用してパスワードを確認できます

于 2012-09-26T10:11:07.853 に答える