在Laravel中检查密码是否正确

在Laravel中检查密码是否正确,laravel,Laravel,在laravel中,我想检查用户是否输入了当前密码,而不是使用存储在该用户数据中的数据库中的密码进行检查。如果正确,则继续,否则给出消息密码不正确 我是新来拉维尔的,所以没有确切的想法 提前谢谢 $('#pwd').blur(function(){ var oldpwd=$('#pwd').val(); var uid = $('#id').val(); console.log(uid); if(ol

在laravel中,我想检查用户是否输入了当前密码,而不是使用存储在该用户数据中的数据库中的密码进行检查。如果正确,则继续,否则给出消息密码不正确

我是新来拉维尔的,所以没有确切的想法

提前谢谢

$('#pwd').blur(function(){
            var oldpwd=$('#pwd').val();
            var uid = $('#id').val();
            console.log(uid);
            if(oldpwd != "")
            {
              $.ajax({
                  url : "{{ url/profile/checkOldPwd}}",
                  data : { oldpwd:oldpwd , uid:uid },
                  type : "POST",
                  success : function(data) {
                    if(data == 0){
                      $("#msg-old").show();
                      $("#msg-old").html("Password is Incorrect!");
                      $("#pwd").val("");
                      $("#pwd").focus();
                  }
                  else
                  {
                    $("#msg-old").hide();
                    $("#msg-old").html("");
                  }
                }
                });
              }
            });

当用户尝试访问页面时,将其重定向到身份验证页面

执行ajax调用,然后在php中执行以下操作:

public function check(Request $request)
{
    if(Hash::check($request->password, $user->password)) {
        // They match
    } else {
        // They don't match
    }
}
我还没有测试过,所以可能不起作用

  • 使用AJAX调用点击服务器路径
  • 检查
    auth()->尝试的结果($request->only('email','password'))
  • 返回带有消息和HTTP状态代码的JSON(如果成功则返回200,如果失败则返回400)
  • success()
    方法中的消息显示给div。如果是错误,则将
    error()
    方法中的错误消息显示给div

  • 您可以使用hash:check方法

    使用哈希创建密码:

    $password = Hash::make('secret');
    
    检查密码:

    if (Hash::check('secret', $hashedPassword))
    {
        // The passwords match...
    }
    

    正如Hiren所提到的,您可以使用默认的注册哈希器,因为它被传递给所使用的特定UserProvider。默认值为
    illumb\Hashing\BcryptHasher

    您可以通过以下几种方式使用它:

  • 从容器中取出
  • $user=user::find($id);
    $hasher=app('hash');
    if($hasher->check($passwordToCheck',$user->password)){
    //成功
    }
    
  • 使用门面
  • $user=user::find($id);
    if(Hash::check('passwordToCheck',$user->password)){
    //成功
    }
    
  • 出于兴趣,使用通用php函数
    password\u verify
    也可以工作。但是,这是可行的,因为它使用的默认哈希算法是bcrypt
  • if(密码验证($passwordToCheck',$user->password)){
    //成功
    }
    
    就这么做吧

    public function authenticateEmployee(array $data){
    
     $email = $data['email'];
     $password = $data['password'];
    
     $user = User::where('email', '=', $email)->first();   //get db User data   
     if(Hash::check($password, $user->password)) {   
    
          return response()->json(['status'=>'false','message'=>'password is correct']);
    
        } else {
            return 'false';
        }
    
    }
    

    if(Hash::check($request->password,Auth::user()->password)){//suces}

    我只是尝试使用ajax,但没有了解如何检查,所以你能给出一些想法吗?查看有关授权的更多信息,或者向我们展示你的代码以帮助你。以上是我的ajax代码。这行不通。Bcrypt每次返回不同的字符串,它不像
    md5
    @Dastur谢谢你,你更喜欢哪个?容器外是最优雅/最快的吗?就个人而言,我越来越喜欢容器外(1)@LeonVismer如果数据库中存储的现有密码散列需要重新设置怎么办?@KiranManiya如果调整了工作系数,可以使用
    hash:needsRehash($hashed)
    来检查它。@LeonVismer是的,我知道了。我也更新了答案。也许更好的做法是像这样获取电子邮件
    $data->get('email')
    ,而不是
    $data['email']