此代码是在validation.js中编写的,用于动态验证所有laravel更改密码表单
$.validator.addMethod("matchp", function(value, element)
{
var dbpass = $("#old").val();
// #old value is fetch from database in type=hidden in frontend and its in bcrypt format.
var txtpass = bcrypt($("#oldpass").val());
// #oldpass value is fetch from frontend its user value and it sholud convert in bcrypt format.
// So that we can compare it to verify the old password while changing the old password.
// Check for equality with the password inputs
if (dbpass != txtpass ) {
return false;
} else {
return true;
}
}, "Your Passwords Must Match");
Bcrypt函数是指一种算法,每次为具有不同盐的唯一字符串提供不同的哈希值。因此无法使用任何 JS 验证插件对其进行验证。当然,您可以在不使用任何哈希技术的情况下检查不同的输入字段值,就像验证密码和确认密码字段时一样。
如果您确实需要在客户端使用 bcrypt,请使用静态盐。
更新,如果您使用@Nevins-b JavaScript Bcrypt插件,那么您可以通过使用相同的盐来验证不同的字段来实现。
希望这能让您满意。
这是行不通的,因为 Laravel 密码也是加盐的。
我要做的是
在后端使用
Hash::check
将 #oldpass 与当前密码进行比较
if(Hash::check($request->oldpass, Auth::user()->password)){
return true;
}else{
return false;
}
不要忘记将外观添加到 Laravel 控制器的顶部
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Hash;