在 jquery 或 javascript 中使用 bcrypt()

问题描述 投票:0回答:2

此代码是在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");
javascript jquery laravel validation bcrypt
2个回答
0
投票

Bcrypt函数是指一种算法,每次为具有不同盐的唯一字符串提供不同的哈希值。因此无法使用任何 JS 验证插件对其进行验证。当然,您可以在不使用任何哈希技术的情况下检查不同的输入字段值,就像验证密码和确认密码字段时一样。

如果您确实需要在客户端使用 bcrypt,请使用静态盐。

更新,如果您使用@Nevins-b JavaScript Bcrypt插件,那么您可以通过使用相同的盐来验证不同的字段来实现。

希望这能让您满意。


0
投票

这是行不通的,因为 Laravel 密码也是加盐的。

我要做的是

  • 使用ajax将未加密的#oldpass传递到后端
  • 在后端使用

    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;
© www.soinside.com 2019 - 2024. All rights reserved.