Многократный охранник Laravel JWT - PullRequest
0 голосов
/ 09 ноября 2019

Добрый день. Я пишу приложение в Laravel, используя Adldap2 и JWT.

Основная идея состоит в том, что есть системные пользователи из таблицы пользователей, а есть простые пользователи из AD. Форма входа и функциональность единичны, и администраторы имеют доступ к админ-панели.

Я попытался сделать два сторожа:

 'defaults' => [
    'guard' => 'user',
    'passwords' => 'users',
],

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

    'user' => [
        'driver' => 'jwt',
        'provider' => 'users',
        'hash' => false
    ],
    'admin' => [
        'driver' => 'jwt',
        'provider' => 'admins',
        'hash' => false
    ]
],

Авторизация проста. Во-первых, я смотрю на таблицу пользователей, в случае, если она является администратором и авторизуется с помощью Guard Admin, если нет, я смотрю в AD для простого пользователя и атрибутирую для Guard.

Я получаю токен jwt без каких-либо проблем. ,Но при последующем запросе я получаю сообщение об ошибке от adldap, потому что в качестве пользователя по умолчанию выбран guard, что относится к AD. Как я могу заставить систему помнить, что вам нужно использовать свою охрану для авторизованного администратора и свою собственную для пользователя?

Поставщики:

'providers' => [
    'users' => [
        'driver' => 'ldap', //old: eloquent
        'model' => App\Models\User::class,
    ],
    'admins' => [
        'driver' => 'eloquent',
        'model' => App\Models\User::class,
    ],
],

1 Ответ

0 голосов
/ 09 ноября 2019

Вы также можете определить в разделе своего провайдера

Откройте config / auth.php и добавьте эти элементы защиты. , и вы должны также использовать промежуточное ПО вJWT Auth. а также определите свою пользовательскую модель getJWTIdentifier getJWTCustomClaims функция

'providers' => [
    'user' => [
        'driver' => 'jwt',
        'provider' => 'users',

    ],
    'admin' => [
        'driver' => 'jwt',
        'provider' => 'admins',

    ],
],
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...