溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

如何在Laravel中實(shí)現(xiàn)多表認(rèn)證

發(fā)布時(shí)間:2024-05-30 11:22:08 來(lái)源:億速云 閱讀:83 作者:小樊 欄目:web開發(fā)

在Laravel中實(shí)現(xiàn)多表認(rèn)證可以通過自定義認(rèn)證驅(qū)動(dòng)來(lái)實(shí)現(xiàn)。以下是一個(gè)簡(jiǎn)單的示例:

  1. 創(chuàng)建一個(gè)自定義的認(rèn)證驅(qū)動(dòng)類,可以在app目錄下創(chuàng)建一個(gè)CustomUserProvider.php文件,代碼如下:
<?php

namespace App\Providers;

use Illuminate\Auth\EloquentUserProvider;
use Illuminate\Contracts\Auth\Authenticatable as UserContract;

class CustomUserProvider extends EloquentUserProvider
{
    public function retrieveByCredentials(array $credentials)
    {
        if (empty($credentials) ||
            (count($credentials) === 1 &&
            array_key_exists('password', $credentials))) {
            return;
        }

        $query = $this->createModel()->newQuery();

        foreach ($credentials as $key => $value) {
            if (! Str::contains($key, 'password')) {
                $query->where($key, $value);
            }
        }

        return $query->first();
    }
}
  1. 在config/auth.php文件中配置自定義的認(rèn)證驅(qū)動(dòng),如下:
'providers' => [
    'users' => [
        'driver' => 'custom',
        'model' => App\User::class,
    ],
],

'guards' => [
    'web' => [
        'driver' => 'session',
        'provider' => 'users',
    ],
],

'passwords' => [
    'users' => [
        'provider' => 'users',
        'table' => 'password_resets',
        'expire' => 60,
    ],
],
  1. 最后,在AuthServiceProvider中注冊(cè)自定義的認(rèn)證驅(qū)動(dòng),在boot方法中添加以下代碼:
use Illuminate\Support\Facades\Auth;

public function boot()
{
    Auth::provider('custom', function ($app, array $config) {
        return new CustomUserProvider($app['hash'], $config['model']);
    });
}

通過以上步驟,就可以實(shí)現(xiàn)在Laravel中使用多表認(rèn)證。在使用時(shí)可以根據(jù)自己的需求進(jìn)行適當(dāng)?shù)恼{(diào)整和修改。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI