Динамически выбрать драйвер аутентификации Laravel - PullRequest
1 голос
/ 26 июня 2019

В настоящее время у меня есть два уровня пользователя в моем приложении.Стандартный пользователь, который использует аутентификацию встроенной базы данных Laravel;и административный пользователь, который использует аутентификацию LDAP через Adldap2 .

config/auth.php:

...
"guards" => [
    "web" => [
        "driver" => "session",
        "provider" => "users",
    ],
    "admin" => [
        "driver" => "session",
        "provider" => "admins",
    ],

"providers" => [
    "users" => [
        "driver" => "eloquent",
        "model" => App\User::class,
    ],
    "admins" => [
        "driver" => "ldap",
        "model" => App\Admin::class,
    ],
],
...

Никаких проблем с этой настройкой вообще.

Теперь есть возможность иметь административных пользователей из-за пределов компании.Эти пользователи будут проходить проверку подлинности не LDAP, а из записи базы данных в новой таблице admins.Я мог бы настроить третьего провайдера, но, очевидно, заходить в приложение и переписывать везде, где проверяются разрешения, было бы неинтересно, поэтому я надеюсь, что есть другой способ.

Предполагая, что у нас были пользователи LDAP, входящие в систему с LDAPдомен, например username@corp.internal, есть ли способ изменить драйвер с «ldap» на «eleoquent» на основе предоставленного имени пользователя?

1 Ответ

1 голос
/ 27 июня 2019

Я почти уверен, что с https://github.com/Adldap2/Adldap2-Laravel вы можете делать то, что вы хотите динамически, я делал это в прошлом.

В этой библиотеке есть эта опция:

'login_fallback' => env('ADLDAP_LOGIN_FALLBACK', true), // While default is false

Эта опция позволяет вам:

"/*
|--------------------------------------------------------------------------
| Login Fallback
|--------------------------------------------------------------------------
|
| The login fallback option allows you to login as a user located on the
| local database if active directory authentication fails.
|
| Set this to true if you would like to enable it.
|
| This option must be true or false and is only
| applicable to the DatabaseUserProvider.
|
*/"

И это то, что вам нужно: если у пользователя нет учетных данных в LDAP, найдите этого пользователя в вашей локальной БД.

Целая тема оприоритетный порядок здесь:

https://github.com/Adldap2/Adldap2-Laravel/issues/221

...