[英]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');
基本上,您想要做的是:
users
表中的用戶。因此,您首先要在表中查詢具有給定用戶名的用戶。 然后在檢索用戶並驗證它們是否存在之后,您可以檢查提供的密碼是否與檢索到的 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.