Symfony выдает себя за пользователя и несколько брандмауэров

У меня проблема с функцией Symfony. Когда я выдаю себя за пользователя и звоню своему API, пользователь не является имитатором.

Вот мой конфиг безопасности:

api:
pattern:   ^/api/.*
provider: fos_userbundle
guard:
authenticators:
- app.wsse_authenticator
- app.form_login_authenticator
entry_point: app.wsse_authenticator
logout:       true
stateless: true
anonymous:    true
switch_user: true
context: my_context
main:
pattern:   ^/.*
provider: fos_userbundle
guard:
authenticators:
- app.form_login_authenticator
switch_user: true
logout:       true
anonymous:    true
remember_me:
secret:      "%secret%"lifetime: 7200 # in seconds (=12h)
always_remember_me: true
context: my_context

Я пытался использовать один и тот же контекст, чтобы разделить подражающего пользователя между обоими брандмауэрами, но это не работает.

Когда сделать запрос на /test олицетворенный пользователь используется, но когда я делаю запрос на /api/test пользователь — это я, а не подражатель.

Кто-то может мне помочь?

1

Решение

Я верю, что то, что вы пытаетесь сделать, не будет работать так, как вы этого хотите.

API брандмауэр есть statelessЭто означает, что нет session участвует в аутентификации. Обычно с REST API Вы отправляете TOKEN с вашим запросом через настройку header или как часть запроса — http://localhost/api/users?apiKey=my_key_goes_here как вы проходите проверку подлинности

С другой стороны, в main межсетевой экран аутентификация осуществляется через сеанс. Учетные данные для аутентификации (т.е. UserToken) хранятся в session и затем они используются каждый раз, когда пользователь делает запрос на URL вашего сайта.

Иметь context сработало бы, если бы оба firewalls мы session основан. В этом конкретном случае методы аутентификации просто несовместимы, поэтому вы не можете просто нажать на Symfony development tool bar а также impersonate другой пользователь.

Делать простой поиск в packagist я нашел SwitchUserStatelessBundle что может быть то, что вы ищете.

3

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]