首頁  >  問答  >  主體

在Laravel 8中如何驗證輸入密碼與資料庫雜湊密碼的匹配

<p>如何在Laravel中從給定的請求中驗證使用者密碼?密碼是如何與儲存在資料庫中的密碼雜湊值進行比較的? ** 這是我的控制器 **</p> <pre class="brush:php;toolbar:false;"><?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' => '使用者不存在! ', 'alert-type' => 'error' ); return back()->with($notification); } else{ $request->session()->put('user',$data); return redirect('dashboard'); } }}</pre></p>
P粉129731808P粉129731808390 天前452

全部回覆(2)我來回復

  • P粉373990857

    P粉3739908572023-08-29 00:51:27

    像這樣

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

    回覆
    0
  • P粉071559609

    P粉0715596092023-08-29 00:50:53

    基本上,你想做的是:

    1. 查詢users表中具有給定使用者名稱的使用者。
    2. 檢查他們的雜湊密碼是否與提供的密碼的雜湊相符。

    所以,你想要首先查詢具有給定使用者名稱的使用者。然後,在檢索到使用者並驗證其存在之後,你可以檢查提供的密碼是否與檢索到的模型上的雜湊密碼相符。

    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' => '用户名和/或密码不正确。',
                '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' => '用户名和/或密码不正确。',
                'alert-type' => 'error'
            ]);
        }
    
        return redirect('dashboard');
    }

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

    回覆
    0
  • 取消回覆