簡體   English   中英

如何匹配輸入密碼和數據庫 hash 密碼在 laravel 8

[英]How to match input password and database hash password in laravel 8

如何從 Laravel 中的給定請求驗證用戶密碼? 密碼如何與數據庫中存儲的密碼 hash 進行核對? ** 這是我的 Controller **

<?php

namespace App\Http\Controllers;


use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;

class MainController extends Controller
{
    function login1(Request $request){
      $username = $request->input('username');
      $password = $request->input('password');

      

      $data = DB::table('users')->where(['username'=>$username, 'password'=>$password])->first();
      if($data == null){
        echo "error";
    
        $notification = array(
                'message' => 'User Does not Exists!',
                'alert-type' => 'error'
            );
            return back()->with($notification);
      }
else{
    
       
            $request->session()->put('user',$data);
            return redirect('dashboard');
      
      
}
}}

$credentials = $request->only('email', 'password');

if (Auth::attempt($credentials)) {
   // Authentication passed...
}

像這樣

$encrypted = Crypt::encrypt('password_name_variable');

基本上,您想要做的是:

  1. 使用給定的用戶名查詢users表中的用戶。
  2. 檢查他們的哈希密碼是否與提供的密碼的 hash 相比較。

因此,您首先要在表中查詢具有給定用戶名的用戶。 然后檢索用戶並驗證它們是否存在之后,您可以檢查提供的密碼是否與檢索到的 model 上的散列密碼匹配。

public function login(Request $request): Response
{
    $user = User::where('username', $request->get('username'));

    if (!$user || !Hash::check($request->get('password'), $user->password)) {
        return back()->with([
            'message' => 'Incorrect username and/or password.',
            'alert-type' => 'error'
        ]);
    }

    $request->session()->put('user', $user);

    return redirect('dashboard');
}

但是,Laravel 中為此提供了一些功能,根據您的需要,執行以下操作可能更簡單:

public function login(Request $request): Response
{
  if (!Auth::attempt(['username' => $request->get('username'), 'password' => $request->get('password')]) {
        return back()->with([
            'message' => 'Incorrect username and/or password.',
            'alert-type' => 'error'
        ]);
    }

    return redirect('dashboard');
}

https://laravel.com/api/8.x/Illuminate/Support/Facades/Auth.html#method_attempt

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM