4

我使用配置sonata_user在以下位置的 SonataAdminBundle config.yml

sonata_user:
    impersonating:
        route:        _profile_logged
    # more config

/admin我在前缀下有我的管理面板。我已经用字段配置UserAdmin(基于User实体) 。impersonating我试图通过单击管理面板中的链接来模拟用户,我看到了应用程序(不是管理面板)登录页面。

我检查了开发人员工具栏,我注意到模拟用户的请求被重定向到登录页面。这很奇怪,因为此请求与前一个请求具有大部分相同的参数(用于管理面板中的用户列表)。尤其是Request Cookies截面相同。

我注意到一个区别Request Headers:第一个请求(用于管理面板中的用户列表)发送cache-control max-age=0但第二个请求(用于模拟)不发送。

ROLE_ALLOWED_TO_SWITCH显然,我以完全权限(特别是)登录到用户的管理面板。

那么,我怎样才能直接从管理面板模拟呢?我的应用程序可能有什么问题?

4

2 回答 2

4

我发现了一个问题:

4. 多个防火墙不共享安全上下文表单文档:http ://symfony.com/doc/current/book/security.html#book-security-common-pitfalls

并找到了解决方案:

来自文档的防火墙上下文:http: //symfony.com/doc/current/reference/configuration/security.html#reference-security-firewall-context

因此,如果您为应用程序和管理面板设置了单独的防火墙,则需要定义防火墙上下文。

于 2013-08-01T10:27:28.183 回答
4

你可以尝试使用config.yml

sonata_user:
    ...
    impersonating:
        route:                sonata_admin_dashboard

并在security.yml

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

这些对我有用。

于 2013-08-01T09:27:13.520 回答