我在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
)登录到用户的管理面板。
那么,我该如何直接从管理面板进行模拟?我的应用程序可能出现什么问题?
答案 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
找到溶剂:
来自文档的因此,如果您为应用程序和管理面板配备了单独的防火墙,则必须定义防火墙上下文。