[英]Symfony: Multiple firewall contexts - User being forwarded to the wrong context
[英]Symfony impersonate a User and multiple firewall
我有一個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
上發出請求時,用戶是我而不是模仿者。
有人可以幫幫我嗎?
我相信你想要做的事情不會像你想要的那樣發揮作用。
API
防火牆是stateless
,這意味着身份驗證中不涉及任何session
。 通常使用REST API
,您可以通過設置header
或作為請求的一部分來發送帶有您請求的TOKEN
- http://localhost/api/users?apiKey=my_key_goes_here
,這是您進行身份驗證的方式。
另一方面,在main
防火牆中,身份驗證通過會話完成。 身份驗證憑據(即UserToken
)存儲在session
,然后在用戶每次向您網站的網址發出請求時使用它們。
如果兩個firewalls
都是基於session
的,那么context
就會有用。 在這種特殊情況下,身份驗證方法簡單地不兼容,這就是為什么您不能簡單地單擊Symfony development tool bar
並impersonate
其他用戶的原因。
在packagist中進行簡單搜索我找到了SwitchUserStatelessBundle ,這可能就是你要找的東西。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.