2017-04-13 49 views
0

在我更改密码功能,使用jQuery验证程序进行验证和Ajax调用检查旧密码提交处理程序。我已经尝试过的jQuery AJAX的自定义规则(addMethod)检查旧password.It了我同时输入“不正确的密码”和“此字段为必填”消息为空密码。然后,我尝试使用下面的提交处理程序中的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; 
     } 
    }); 
}); 

我检查旧密码代码

$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

按在评论

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中的密码。这可能会解决您的问题。

我看你使用Laravel Framerowk。所以你可以使用下面的密码进行密码哈希比较。

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

参见:https://laravel.com/docs/5.0/hashing