[英]How to make a custom auth query in Laravel
我是使用Laravel的新手,但遇到了一些問題。 當我使用以下命令創建身份驗證時:
php artisan make:auth
它會自動創建Auth控制器,視圖和默認用戶表。 在這里,我想做一些不同的驗證。 我有一張這樣的桌子:
雇員
id | reg_number | name
用戶
id | name | password | remember_token | employee_id | created_at | updated_at
登錄時,我想加入employees
and users
表,因此查詢將類似於:
select users.*, employees.reg_number inner join employees on employees.id = users.employee_id
然后,我想使用reg_number
和password
。
我如何創建類似的東西?
我一直在許多網站上搜索,但沒有找到任何解決方案。 預先感謝您的回答。
您嘗試使用2個不同的表和2個不同的模型進行身份驗證,因此通常的Auth::attempt()
可能無法正常工作。 但是,您可以做的是自己手動驗證用戶身份。 有任何安全隱患/問題嗎? 我不知道 與專家見。
因此,您要做的是,當用戶使用reg_number
登錄時。 你做
public function authenticate(Request $request)
{
$employee = Employee::where('reg_number', $request->reg_number)->first();
if ( !$employee ) { //If no employee was found
return redirect()->back()->withErrors(['reg_number' => 'No such reg_number ']);
}
//Assuming you have the relationship setup between employee and user
//probably a one to one.
$user = $employee->user;
//manually check their password
//assuming you hash every password when saving the user
if (Hash::check($request->password, $user->password)) {
//password matched. Log in the user
Auth::login($user);
return redirect()->intended('dashboard');
}
return redirect()->back()->withErrors(['credentials' => 'Check your credentials']);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.