LARAVEL: несколько драйверов для одного охранника - PullRequest
1 голос
/ 10 февраля 2020

Я пытаюсь найти несколько способов аутентификации для службы API в моем приложении Laravel. Приложение представляет собой SPA, использующее Vue. js и использует маршрут API для визуализации и представления всех компонентов представления. В настоящее время я использую драйвер JWT для защиты API в приложении. Однако я также хотел бы предложить своим клиентам возможность доступа к одному и тому же API через OAuth и персональный токен Laravel. С учетом вышесказанного, как мне защитить свои ресурсы с помощью промежуточного программного обеспечения Auth, где к нему можно получить доступ изнутри с помощью JWT или извне с помощью клиента с OAuth или токеном API.

Контроллер:

/**
 * Create a new controller instance.
 *
 * @return void
 */
public function __construct()
{
    // Make sure user is authenticated
    $this->middleware('auth:api');
    //$this->middleware('auth:oauth');
}

Auth Guard:

'guards' => [
    'web' => [
        'driver' => 'session',
        'provider' => 'users',
    ],
    'api' => [
        'driver' => 'jwt',
        'provider' => 'users',
    ],
    'oauth' => [
        'driver' => 'token',
        'provider' => 'users',
    ]
],

1 Ответ

1 голос
/ 10 февраля 2020

Если вы хотите иметь возможность разрешить использование нескольких охранников для своих маршрутов, вы можете предоставить различные охранники для вызова промежуточного программного обеспечения, как вы это уже сделали с защитой api, за исключением того, что вы предоставляете их в виде значений, разделенных запятыми:

$this->middleware('auth:api,oauth,web');

Это будет означать, что если пользователь прошел проверку подлинности с одним из охранников, он сможет получить доступ к маршруту (маршрутам).

...