在Laravel中,如何實作資料庫驅動程式和提供者身份驗證,而不使用優雅的方式
P粉043566314
P粉043566314 2023-08-28 09:14:37
0
1
402
<p>Laravel支援的驅動程式是"<strong>database</strong>"或"<strong>eloquent</strong>"來授權網站。 在預設的<strong>config/auth.php</strong>中,我們可以看到它總是聲明驅動程式是eloquent。 </p> <pre class="brush:php;toolbar:false;">``` /* |------------------------------------------------- ------------------------- | User Providers |------------------------------------------------- ------------------------- | | 所有身份驗證驅動程式都有一個使用者提供者。這定義瞭如何從資料庫或其他儲存機制中實際檢索使用者的資料。 | | 如果您有多個使用者表或模型,您可以配置多個代表每個模型/表的來源。然後可以將這些來源指派給您定義的任何額外的身份驗證保護。 | | 支持的:"database","eloquent" | */ 'providers' => [ 'users' => [ 'driver' => 'eloquent', 'model' => App\Models\Users::class, ], // 'users' => [ // 'driver' => 'database', // 'table' => 'users', // ], ], ```</pre> <p>然後我們有一個模式<strong>User</strong>與表格User關聯,用於檢查認證。 因此,我們可以使用一些<strong>auth</strong>的方法: <strong>auth::check(), auth::atemp(), auth:login(),...</strong> 如果我不使用Model App\Models\Users::class,而是使用<strong>'driver' => 'database'</strong>,那麼我如何使用一些<strong>auth</strong>的函數進行授權呢? </p>
P粉043566314
P粉043566314

全部回覆(1)
P粉781235689

只需將驅動程式變更為資料庫,您可以輕鬆地註解掉eloquent部分並取消註解驅動資料庫部分,您可以像以前一樣正常使用auth()。 Laravel的auth功能即插即用。

'users' => [
    'driver' => 'database',
    'table' => 'users', //或者您用于用户的任何表。
]

您可以在AuthController中設計您的signIn方法,如下所示:

public function signIn(Request $request)
    {
        $request->validate([
            'email' => 'required|email',
            'password' => 'required'
        ]);

        $credentials = $request->only('email', 'password');

        if (Auth::attempt($credentials)) {
            return redirect('/');
        }

        return redirect('login')->withErrors('登录详细信息无效');
    }

它將在eloquent和資料庫驅動程式中都起作用。

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板