Symfony3 / FOSUserBundle : /login/ 循环
Symfony3 / FOSUserBundle : /login/ loop
我的网站是 运行 Symfony 3.4,我只是安装了 FOSUserBundle 来管理 login/authentification。我关注了 this tutorial,但一切都不尽如人意。作为记录,我可以访问我的主页视图 (/app_dev.php/) 和我的登录页面视图 (/app_dev.php/login) 但在我的 security.yml :
在"main"防火墙中,如果"anonymous"设置为"true":任何人都可以访问所有页面。
在"main"防火墙中如果"anonymous"设置为"false":
我不明白为什么这条路径会形成无限循环。
下面是我的安全 yaml 配置:
security:
encoders:
FOS\UserBundle\Model\UserInterface: bcrypt
providers:
fos_userbundle:
id: fos_user.user_provider.username
role_hierarchy:
ROLE_ADMIN: ROLE_USER
firewalls:
main:
pattern: ^/
form_login:
provider: fos_userbundle
csrf_token_generator: security.csrf.token_manager
logout: true
anonymous: false
access_control:
- { path: ^/login$, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/register, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/resetting, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/admin/, role: ROLE_ADMIN }
在我的 dev.log 中,这些行是循环的:
[2018-01-15 10:54:24] request.INFO: Matched route
"fos_user_security_login".
{"route":"fos_user_security_login","route_parameters":{"_controller":"FOS\UserBundle\Controller\SecurityController::loginAction","_route":"fos_user_security_login"},"request_uri":"http://www.mycompany.com/app_dev.php/login","method":"GET"}
[] [2018-01-15 10:54:24] security.INFO: An AuthenticationException was
thrown; redirecting to authentication entry point.
{"exception":"[object]
(Symfony\Component\Security\Core\Exception\AuthenticationCredentialsNotFoundException(code:
0): A Token was not found in the TokenStorage. at
/var/www/custom_pim/vendor/symfony/symfony/src/Symfony/Component/Security/Http/Firewall/AccessListener.php:51)"}
[] [2018-01-15 10:54:24] security.DEBUG: Calling Authentication entry
point. [] []
你必须改变anonymous
:
anonymous: true
我已经检查了我的设置和你的设置,你唯一不同的是
anonymous: false
我已将其设置为 true(我认为这是默认值)。也许尝试更改它并报告回来,我手头有一个非常新的 FOSUserBundle 项目要检查
我用下面的代码解决了我的问题:
防火墙:
main:
pattern: ^/
form_login:
provider: fos_userbundle
default_target_path: /
csrf_token_generator: security.csrf.token_manager
logout:
target: fos_user_security_login
anonymous: true
access_control:
- { path: ^/$, role: ROLE_USER }
我的网站是 运行 Symfony 3.4,我只是安装了 FOSUserBundle 来管理 login/authentification。我关注了 this tutorial,但一切都不尽如人意。作为记录,我可以访问我的主页视图 (/app_dev.php/) 和我的登录页面视图 (/app_dev.php/login) 但在我的 security.yml :
在"main"防火墙中,如果"anonymous"设置为"true":任何人都可以访问所有页面。
在"main"防火墙中如果"anonymous"设置为"false":
我不明白为什么这条路径会形成无限循环。 下面是我的安全 yaml 配置:
security:
encoders:
FOS\UserBundle\Model\UserInterface: bcrypt
providers:
fos_userbundle:
id: fos_user.user_provider.username
role_hierarchy:
ROLE_ADMIN: ROLE_USER
firewalls:
main:
pattern: ^/
form_login:
provider: fos_userbundle
csrf_token_generator: security.csrf.token_manager
logout: true
anonymous: false
access_control:
- { path: ^/login$, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/register, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/resetting, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/admin/, role: ROLE_ADMIN }
在我的 dev.log 中,这些行是循环的:
[2018-01-15 10:54:24] request.INFO: Matched route "fos_user_security_login". {"route":"fos_user_security_login","route_parameters":{"_controller":"FOS\UserBundle\Controller\SecurityController::loginAction","_route":"fos_user_security_login"},"request_uri":"http://www.mycompany.com/app_dev.php/login","method":"GET"} [] [2018-01-15 10:54:24] security.INFO: An AuthenticationException was thrown; redirecting to authentication entry point. {"exception":"[object] (Symfony\Component\Security\Core\Exception\AuthenticationCredentialsNotFoundException(code: 0): A Token was not found in the TokenStorage. at /var/www/custom_pim/vendor/symfony/symfony/src/Symfony/Component/Security/Http/Firewall/AccessListener.php:51)"} [] [2018-01-15 10:54:24] security.DEBUG: Calling Authentication entry point. [] []
你必须改变anonymous
:
anonymous: true
我已经检查了我的设置和你的设置,你唯一不同的是
anonymous: false
我已将其设置为 true(我认为这是默认值)。也许尝试更改它并报告回来,我手头有一个非常新的 FOSUserBundle 项目要检查
我用下面的代码解决了我的问题:
防火墙:
main:
pattern: ^/
form_login:
provider: fos_userbundle
default_target_path: /
csrf_token_generator: security.csrf.token_manager
logout:
target: fos_user_security_login
anonymous: true
access_control:
- { path: ^/$, role: ROLE_USER }