2013-08-01 43 views
3

中失去我config.yml使用SonataAdminBundle與配置sonata_user屆模擬

sonata_user: 
    impersonating: 
     route:  _profile_logged 
    # more config 

我下/admin前綴我的管理面板。我已配置UserAdmin(基於User實體)與impersonating字段。我試圖通過點擊我的管理面板中的鏈接來模擬用戶,我看到了應用程序(而不是管理面板)登錄頁面。

我檢查了開發人員工具欄,發現模擬用戶的請求被重定向到登錄頁面。這很奇怪,因爲這個請求的參數大部分與前一個參數相同(用於管理面板中的用戶列表)。特別是Request Cookies部分是相同的。

我注意到Request Headers的一個不同:第一個請求(用於管理面板中的用戶列表)發送cache-control max-age=0,但第二個(用於模擬)dosen't。

很顯然,我登錄到具有完全權限的用戶的管理面板(特別是ROLE_ALLOWED_TO_SWITCH)。

那麼,我該如何直接從管理面板模擬呢?我的應用程序有什麼問題?

回答

3

我發現了一個問題:

4.多重防火牆不共享安全上下文形式的文檔:http://symfony.com/doc/current/book/security.html#book-security-common-pitfalls

並發現sollution:

防火牆上下文從文檔:http://symfony.com/doc/current/reference/configuration/security.html#reference-security-firewall-context

所以,如果你有單獨的防火牆申請,定義防火牆上下文是必要的ation和管理面板。

+0

優秀!在兩個防火牆上添加 'context:user' 使得模擬工作正常! –

4

你可以嘗試使用config.yml

sonata_user: 
    ... 
    impersonating: 
     route:    sonata_admin_dashboard 

而且在security.yml

security: 
    ... 
    firewalls: 
     ... 
     admin: 
      ... 
      switch_user:  true 

這些工作對我來說。

+0

是的,我有類似的配置。不幸的是不適合我。防火牆之間的共享安全上下文可能存在問題。我會檢查一下。 – NHG