我已经安装了FOSUserBundle
,我在我的项目中使用它。其登录页面重定向到未知路径/_wdt/50366043f414d
。我更改default_target_path
在form_login
security.yml
文件下,但它没有生效。default_target_path不能与FOSUserBundle一起使用
如何更改FOSUserBundle中登录页面的目标路径?
我已经安装了FOSUserBundle
,我在我的项目中使用它。其登录页面重定向到未知路径/_wdt/50366043f414d
。我更改default_target_path
在form_login
security.yml
文件下,但它没有生效。default_target_path不能与FOSUserBundle一起使用
如何更改FOSUserBundle中登录页面的目标路径?
我必须设置always_use_default_target_path
到true
,如图 symfony documentation
#app/config/security.yml
firewalls:
main:
pattern: ^/
form_login:
login_path: /login
default_target_path: /my/desired/path
always_use_default_target_path: true
我有同样的问题,我是有这个问题的原因是因为Symfony的尝试加载的网页调试工具(因此错误中的“_wdt”位),它有自己的路径,在页面加载结束时被调用。就我而言,我已经配置了我的security.yml像这样:
security:
encoders:
FOS\UserBundle\Model\UserInterface: sha512
role_hierarchy:
ROLE_ADMIN: ROLE_USER
ROLE_SUPER_ADMIN: ROLE_ADMIN
providers:
fos_userbundle:
id: fos_user.user_provider.username
firewalls:
main:
pattern: ^/
form_login:
provider: fos_userbundle
csrf_provider: form.csrf_provider
logout: true
anonymous: true
access_control:
- { path: ^/login$, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/register, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/resetting, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/css, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/js, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/, role: ROLE_USER }
这意味着,如果用户试图打开一个页面根后面什么“ /”,他必须先登录
我解决了这一问题的方法是通过添加‘_wdt’的一部分,并允许它为匿名用户:
access_control:
- { path: ^/login$, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/register, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/resetting, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/css, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/js, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/_wdt, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/, role: ROLE_USER }
这可能是一个老问题,但而不是o f改变access_control当前Symfony2配置为调试工具栏提供了额外的防火墙:
# Disabling the security for the web debug toolbar, the profiler and Assetic.
dev:
pattern: ^/(_(profiler|wdt)|css|images|js)/
security: false
谢谢!这是解决真正的问题。不幸的是,选择的答案只是“覆盖”了问题的出现。 –