模拟过程中 session 丢失

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

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

sonata_user:
    impersonating:
        route:        _profile_logged
    # more config

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

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

我注意到 Request Headers 中的一个不同之处:第一个请求(对于管理面板中的用户列表)发送 cache-control max-age=0但是第二个(用于冒充)没有。

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

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

最佳答案

您可以尝试使用 config.yml :

sonata_user:
    ...
    impersonating:
        route:                sonata_admin_dashboard

而在 security.yml :

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

这些对我有用。

关于模拟过程中 session 丢失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17987945/

相关文章:

symfony - 以奏鸣曲管理员的编辑形式为用户设置角色

javascript - php中如何删除浏览器的所有cookie

php - 为什么 laravel 序列化 session 数据而不是 session 编码/解码

symfony - 在应用 DataTransformer 之前验证字段

symfony - Sonata_type_admin 调用时如何在 Sonata 的 Admin 类中获取底层对象?

symfony - 如何在 Sonata admin 中为 yaml 配置实现 gui?

ruby-on-rails - 如何从在数据库中创建无用的 session 中排除 NewRelic RPM pinger

php - 一键提交多表单

mysql - 如何将数据从外部 mysql 数据库导入到 Symfony2 项目中?

php - Doctrine - Query One-To-Many, Unidirectional with Join Table association from inverse side