Возможно, вы можете попробовать свойство «контекстного» брандмауэра.
Скажем у вас есть конфигурации что-то вроде этого (который предположительно вы делаете):
security:
// providers etc ...
firewall:
main:
pattern: # ...
provider: my_users
http_basic: ~
api:
pattern: # ...
provider: my_users
http_basic: ~
В этом случае сеанс пользователя будет содержать свойство «_security_main» после аутентификации против «главного» брандмауэра, а затем когда они пытаются получить доступ к местоположению «api», им будет предложено повторно аутентифицироваться, а затем получить свойство сеанса «_security_api».
Чтобы предотвратить это повторное приглашение, вы можете добавить свойство «контекст» для каждого определения брандмауэра вы хотите одну и ту же проверку подлинности - так:
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
В этом случае при проверке подлинности с «основным 'firewall, свойство' _security_primary_auth 'будет установлено в сеансе пользователя. Любые последующие запросы внутри firewill api будут использовать значение «_security_primary_auth», чтобы установить статус аутентификации (и, следовательно, пользователь будет аутентифицирован).
Конечно, это совместное использование контекста аутентификации будет работать в обоих направлениях (независимо от того, будут ли они сначала работать с основным или брандмауэром «api»), - если вам нужна только скорость в одном направлении, все будет сложнее.
Надеюсь, это поможет.
блестящий! работает как шарм. – anushr
Ницца, я искал это в течение долгого времени! – PMoubed
У меня точно такая же проблема, единственная разница заключается в том, что «главный» брандмауэр аутентифицируется с использованием формы входа в систему вместо http_basic, поэтому брандмауэр «api» предлагает пользователю снова войти в систему, даже если пользователь аутентифицирован через бланк. Есть ли способ заставить его работать? – Xocoatzin