簡體   English   中英

Symfony模擬用戶和多個防火牆

[英]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 barimpersonate其他用戶的原因。

packagist中進行簡單搜索我找到了SwitchUserStatelessBundle ,這可能就是你要找的東西。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM