在我的更改密码功能中,我使用jquery验证器进行验证,并使用ajax调用来检查提交处理程序中的旧密码。我在jquery中使用自定义规则(addMethod)中的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)
根据你在评论中提到的代码
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";
}