会话期间会话丢失

时间:2013-08-01 07:42:33

标签: session symfony sonata-admin sonata-user-bundle

我在sonata_user中使用配置为config.yml的SonataAdminBundle:

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)登录到用户的管理面板。

那么,我该如何直接从管理面板进行模拟?我的应用程序可能出现什么问题?

2 个答案:

答案 0 :(得分:4)

您可以尝试使用config.yml

sonata_user:
    ...
    impersonating:
        route:                sonata_admin_dashboard

security.yml

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

这些对我有用。

答案 1 :(得分:4)

我发现了一个问题:

4。多个防火墙不共享安全上下文表单docs: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

因此,如果您为应用程序和管理面板配备了单独的防火墙,则必须定义防火墙上下文。