我有一个旧的 Symfony 3.1 站点,我将其升级到 Symfony 3.4.x,然后升级到 Symfony 4.4.11,但我没有将其升级到 symfony flex。我修复了很多问题,公共网站似乎可以正常工作。
我必须重建身份验证,因为旧的身份验证与 sf4 不兼容。
我按照这个 https://symfony.com/doc/4.4/security/form_login_setup.html
这是: https: //symfonycasts.com/screencast/symfony-security/make-user
我最终遇到的情况是,在成功进行身份验证后,当它重定向到管理区域时,它总是再次检查 LoginFormAuthenticator,这显然不支持管理区域,并且它会重定向回匿名用户的登录页面。
关于这个问题有很多讨论,并尝试了我发现的所有内容,但没有找到解决方案。即使调试它也不行。
会话保存在定义的路径中。它的id与浏览器中的PHPSESSID相同。站点运行 HTTP 协议。
安全.yml
security:
encoders:
AppBundle\Entity\User:
algorithm: bcrypt
cost: 12
providers:
user_provider:
entity:
class: AppBundle:User
property: email
firewalls:
dev:
pattern: ^/(_(profiler|wdt|error)|css|images|js)/
security: false
main:
stateless: true
pattern: ^/
anonymous: true
logout_on_user_change: true
guard:
authenticators:
- AppBundle\Security\LoginFormAuthenticator
form_login:
provider: user_provider
username_parameter: email
csrf_token_generator: security.csrf.token_manager
login_path: app_login
logout:
path: app_logout
access_control:
- { path: ^/admin, roles: ROLE_ADMIN }
- { path: ^/, roles: IS_AUTHENTICATED_ANONYMOUSLY }
路由:
app_login:
path: /login
defaults: { _controller: AppBundle\Controller\BackendController:loginAction }
app_logout:
path: /logout
defaults: { _controller: AppBundle\Controller\BackendController:logoutAction }
app_admin:
path: /admin/{page}/{entry}
defaults: { _controller: AppBundle\Controller\BackendController:showAction, entry: null }
守候你守候我
红颜莎娜