Як використовувати декілька постачальників користувачів
Дата оновлення перекладу 2023-06-23
Як використовувати декілька постачальників користувачів
Кожен механізм аутентифікації (наприклад, HTTP-аутентифікація, форма входу у систему тощо) використовує тільки одного постачальника користувачів і буде використовувати першого оголошеного постачальника користувачів за замовчуванням. Але що, якщо ви хочете вказати кілька користувачів через конфігурацію, а решту ваших користувачів у DB? Це можливо, якщо створити нового постачальника, який зв'яже конфігурацію і базу даних:
1 2 3 4 5 6 7 8 9 10 11 12
# app/config/security.yml
security:
providers:
chain_provider:
chain:
providers: [in_memory, user_db]
in_memory:
memory:
users:
foo: { password: test }
user_db:
entity: { class: AppBundle\Entity\User, property: username }
Тепер усі механізми аутентифікації використовуватимуть chain_provider
,
оскільки він вказаний першим. chain_provider
, своєю чергою, буде пробувати
завантажити користувача з постачальників in_memory
і user_db
.
Ви також можете сконфігурувати брандмауер або індивідуальні механізми аутентифікації, щоб вони використовували конкретного постачальника. Знову ж таки, якщо постачальник не вказаний ясно, то завжди буде використовуватися перший:
1 2 3 4 5 6 7 8 9 10 11
# app/config/security.yml
security:
firewalls:
secured_area:
# ...
pattern: ^/
provider: user_db
http_basic:
realm: 'Secured Demo Area'
provider: in_memory
form_login: ~
У цьому прикладі, якщо користувач намагається виконати вхід через HTTP-аутентифікацію,
то система аутентифікації використовуватиме постачальника користувачів in_memory
.
Але якщо користувач намагається виконати вхід через форму входу, то буде використано
постачальник user_db
(оскільки він встановлений за замовчуванням для всього брандмауера).
Щоб дізнатися більше інформації про постачальників користувачів і конфігурації брандмауера, дивіться Довідник конфігурації Security (SecurityBundle).