2017-04-13 10 views
0

私のパスワード変更機能では、検証のためにjqueryバリデータを使用し、サブミットハンドラで古いパスワードをチェックするためにajaxコールを使用します。古いパスワードを確認するためjqueryのカスタムルール(addMethod)でAJAXを試しました。私は空のパスワードのために "Incorrect password"と "This field is required"というメッセージを同時に表示します。次に、私はAjaxでサブミットハンドラを呼び出すことを試みましたが、現在はAjaxの古いパスワードをチェックしていません。送信ハンドラでのajaxコール

var postUrl = "{{ URL::to('frontend/checkpassword') }}"; 

$(document).ready(function() { 
    $('#passwordForm').validate({ 
     rules: { 
      password: { 
       required: true, 
       password1: { 
        required: true, 
        minlength: 8 
       }, 
       password2: { 
        required: true, 
        equalTo: '#password1' 
       }, 
      }, 
      messages: { 
       password: { 
        required: "Please enter Old Password", 
       }, 
       password1: { 
        required: "Please enter a password", 
        minlength: "Your password must be at least 8 characters long" 
       }, 
       password2: { 
        required: "Please enter a password", 
        equalTo: "The two passwords do not match!" 
       }, 
      }, 
     }, 
     submitHandler: function(form) { 
      $.ajax({ 
       type: "POST", 
       url: postUrl, 
       data: $("#passwordForm").serialize(), 
       async: true, 
       beforeSend: function() { 
        $("#loading-image").show(); 
       }, 
       success: function(response) { 
        if (response == 0) { 
         $("#loading-image").hide(); 
         $('#display').html("Incorrect Password"); 
         $('#password1, #password2 ').prop('disabled', true); 
        } else { 
         $("#loading-image").hide(); 
         $('#display').html("Correct Password"); 
         $('#password1,#password2').removeAttr('disabled'); 
        } 
       } 
      }); 

      return false; 
     } 
    }); 
}); 

古いパスワードをチェックするための私のコードは、あたりはコメント

public function checkPassword(Request $request) { 
    $strPassword = $request->password; 
    $intSessionUserId=Session::get('sessionUserId'); 
    $user = register::find($intSessionUserId); 
    $strOldPassword = $user->password1; 
    if($strPassword==$strOldPassword) { 
     echo "1"; 
    } else { 
     echo "0"; 
    } 
} 

でコードを述べたように、私はあなたが暗号化されたパスワードを使用してプレーンなパスワードを比較することができると思います

$strPassword = $request->password; 
$intSessionUserId=Session::get('sessionUserId'); 

$user = register::find($intSessionUserId); 
$strOldPassword = $user->password1; 

if($strPassword==$strOldPassword) { 
    echo "1"; 
} 
else { 
    echo "0"; 
} 
+0

チェックパスワード機能のためのサーバー側のコードは何ですか? –

+0

postUrlは次のとおりです。var postUrl = 'frontend/checkpassword'; –

+0

_「あなたは何をしたいと思っていましたか?何を達成しようとしていますか?何を試していますか?**これらの試みには何が起こったのですか?詳細:特に何かがうまくいかなかった場合、例外がスローされた場合、例外は何ですか?(型を指定するだけではなく、エラーメッセージを出し、どの行がスローしたかを伝えてください) 。) "_(引用: [完璧な質問を書く](https://codeblog.jonskeet.uk/2010/08/29/writing-the-perfect-question/)) – Andreas

答えて

0

です。したがって、暗号化パスワードに使用している暗号化方式を確認して確認してください。 $strPasswordに格納されているパスワードを暗号化してください。これにより、問題が解決される場合があります。

私はLaravel Framerowkを使用しています。以下の行をパスワードのハッシュ比較に使用することができます。

if(Hash::check($strPassword, $strOldPassword)){ 
    echo "1"; 
}else { 
    echo "0";  
} 

参照してください:https://laravel.com/docs/5.0/hashing

関連する問題