Ответ 1
Возможно, вы можете попробовать свойство "контекстного" брандмауэра.
Скажите, что у вас есть что-то вроде этого (что, предположительно, вы делаете):
security:
// providers etc ...
firewall:
main:
pattern: # ...
provider: my_users
http_basic: ~
api:
pattern: # ...
provider: my_users
http_basic: ~
В этом случае пользовательский сеанс будет содержать свойство "_security_main" после аутентификации против "основного" брандмауэра, а затем, когда они попытаются получить доступ к "api", они будут предложены повторно аутентифицироваться и затем Свойство сеанса '_security_api'.
Чтобы предотвратить это повторное приглашение, вы можете добавить свойство "context" для каждого определения брандмауэра, которому вы хотите поделиться той же аутентификацией, - так:
security:
# providers etc ...
firewall:
main:
pattern: # ...
provider: my_users
http_basic: ~
context: primary_auth # new
api:
pattern: # ...
provider: my_users
http_basic: ~
context: primary_auth # new
В этом случае при аутентификации с основным брандмауэром в пользовательском сеансе будет установлено свойство _security_primary_auth. Любые последующие запросы внутри firewill api будут использовать значение "_security_primary_auth" для установления статуса аутентификации (и, следовательно, пользователь будет аутентифицирован).
Конечно, это совместное использование контекста аутентификации будет работать в обоих направлениях (независимо от того, сначала ли они работают с "основным" или "брандмауэром" api), - если вам нужно только ускорение в одном направлении, все будет сложнее.
Надеюсь, что это поможет.