簡體   English   中英

如何在Laravel中進行自定義身份驗證查詢

[英]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_numberpassword

我如何創建類似的東西?

我一直在許多網站上搜索,但沒有找到任何解決方案。 預先感謝您的回答。

您嘗試使用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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM