我是 Laravel 的新手,我遇到了一些问题。当我使用以下命令创建身份验证时:
php artisan make:auth
它会自动创建身份验证控制器、视图和默认用户表。在这里,我想做一些不同的身份验证。我有一张这样的表:
雇员
id | reg_number | name
用户
id | name | password | remember_token | employee_id | created_at | updated_at
当我登录时,我想加入employees
和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']);
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句