Bagaimana untuk mengesahkan bahawa kata laluan input sepadan dengan kata laluan cincang pangkalan data dalam Laravel 8
P粉129731808
P粉129731808 2023-08-28 14:25:49
0
2
523
<p>Bagaimana untuk mengesahkan kata laluan pengguna daripada permintaan yang diberikan dalam Laravel? Bagaimanakah kata laluan berbanding dengan cincang kata laluan yang disimpan dalam pangkalan data? ** Ini pengawal saya **</p> <pre class="brush:php;toolbar:false;"><?php ruang nama AppHttpControllers; gunakan IlluminateHttpRequest; gunakan IlluminateSupportFacadesDB; kelas MainController memanjangkan Pengawal { log masuk fungsi1(Permintaan $permintaan){ $username = $request->input('username'); $password = $request->input('password'); $data = DB::table('users')->where(['username'=>$username, 'password'=>$password])->first(); if($data == null){ bergema "ralat"; $pemberitahuan = array( 'message' => 'Pengguna tidak wujud! ', 'alert-type' => 'error' ); return back()->with($notification); } lain{ $request->session()->put('user',$data); return redirect('dashboard'); } }}</pre></p>
P粉129731808
P粉129731808

membalas semua(2)
P粉373990857

Seperti ini

$disulitkan = Crypt::encrypt('kata laluan_nama_variable');

P粉071559609

Pada asasnya, apa yang anda mahu lakukan ialah:

  1. Pertanyaan usersjadual untuk pengguna dengan nama pengguna yang diberikan.
  2. Semak sama ada kata laluan cincang mereka sepadan dengan cincang kata laluan yang disediakan.

Jadi, anda mahu pertamamenyiasat pengguna dengan nama pengguna yang diberikan. Kemudian, selepas mendapatkan semula pengguna dan mengesahkan kewujudannya, anda boleh menyemak sama ada kata laluan yang diberikan sepadan dengan kata laluan cincang pada model yang diambil.

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');
}

Walau bagaimanapun, terdapat fungsi terbina dalam dalam Laravel untuk mencapai ini, dan bergantung pada keperluan anda, mungkin lebih mudah untuk melakukan ini:

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

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan