【问题标题】:How to match input password and database hash password in laravel 4如何在laravel 4中匹配输入密码和数据库哈希密码
【发布时间】:2014-09-27 17:49:54
【问题描述】:

如何从 Laravel 中的给定请求中验证用户密码?如何根据存储在数据库中的密码哈希检查密码?

【问题讨论】:

  • 应用你用来散列存储密码的散列算法到输入? $hashedPassword = hash($_REQUEST["password"] 什么的。
  • 不,我没有使用 php。当用户登录他的帐户时,他的插入密码因此该密码转换为“Hash ::”并与数据库存储的“Hash ::”密码进行比较。所以我很困惑如何从数据库中获取密码并与用户登录密码进行比较。我找到了一个校验码,但不明白如何比较 if (Hash::check('secret', $hashedPassword)) { // The passwords match... }
  • 查看如何在 Laravel 中make Hash and Verify Hash

标签: php laravel laravel-4


【解决方案1】:

首先,您需要根据电子邮件地址或用户名或您识别他们的方式找到正在登录的用户,例如:

$user = User::where('email', '=', 'email@address.com')->first();

然后,您需要检查散列密码,如下所示:

Hash::check('INPUT PASSWORD', $user->password);

这将根据密码是否匹配返回真或假。

【讨论】:

    【解决方案2】:

    Laravel 登录验证:

    public function login(Request $request)
    {
         $email = $request->input('email');
         $password = $request->input('password');
    
         $user = User::where('email', '=', $email)->first();
         if (!$user) {
            return response()->json(['success'=>false, 'message' => 'Login Fail, please check email id']);
         }
         if (!Hash::check($password, $user->password)) {
            return response()->json(['success'=>false, 'message' => 'Login Fail, pls check password']);
         }
            return response()->json(['success'=>true,'message'=>'success', 'data' => $user])
    }
    

    【讨论】:

      【解决方案3】:
       $email = Input::get('email');
          $user = User::where('email', '=', $email)->first();
          if (!$user) {
              return response()->json(['success'=>false, 'message' => 'Not Login successfull']);
          }
          if (!Hash::check(Input::get('password'), $user->password)) {
              return response()->json(['success'=>false, 'message' => 'Not Login successfull']);
          }
          return response()->json(['success'=>true,'message'=>'success', 'data' => $user]);
      

      【讨论】:

        【解决方案4】:

        第一步:首先从数据库中获取用户数据

        $user = User::where('email', '=', $request->input('email'))->first();
        

        第二步:获取用户密码

        $user->password
        

        第 3 步:验证为

         if(Hash::check($password, $user->password)) {
                return response()->json(['status'=>'true','message'=>'Email is correct']);
            } else {
                return response()->json(['status'=>'false', 'message'=>'password is wrong']);
            }
        

        呜呼!!!!你已经完成了:)

        【讨论】:

          【解决方案5】:

          从 Laravel 5 开始,您可以使用 bcrypt() 函数来散列明文。因此,您可以将散列密码保存在数据库中,然后再次比较散列密码以匹配。

          $save_password = bcrypt('plain_text_password');
          
          $check_password = bcrypt('provided_password_while_login_request');
          

          然后,比较这两者。你可以走了。

          或者,如果你想使用 Laravel 方式:

           $credentials = $request->only('email', 'password');
          
              if (Auth::attempt($credentials)) {
                  // Authentication passed...
                  return redirect()->intended('dashboard');
              }
          

          根据 Laravel 文档,我引用:“尝试方法接受一个键/值对数组作为其第一个参数。数组中的值将用于在您的数据库表中查找用户。因此,在上面的例子,用户会通过 email 列的值来检索,如果找到了用户,将存储在数据库中的哈希密码与通过数组传递给方法的密码值进行比较。你不应该对指定为密码值的密码进行哈希处理,因为框架会在将其与数据库中的哈希密码进行比较之前自动对该值进行哈希处理。如果两个哈希密码匹配,将为用户启动经过身份验证的会话。 p>

          如果身份验证成功,则尝试方法将返回 true。否则返回false。”

          【讨论】:

            【解决方案6】:

            您可以按照 laravel 网站上的说明创建以下方法来查找用户身份验证:

            public function authenticate(Request $request)
            {
                $credentials = $request->only('email', 'password');
            
                if (Auth::attempt($credentials)) {
                    // Authentication passed...
                    // use the below code to redirect the user to dashboard.
                    // return redirect()->intended('dashboard');
                }
            }
            

            请查看以下链接以获取有关 laravel 网站上身份验证的更多详细信息: https://laravel.com/docs/5.6/authentication#authenticating-users

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 2015-04-05
              • 1970-01-01
              • 2015-12-18
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2017-11-30
              相关资源
              最近更新 更多