【问题标题】:FOSUserBundle : weird authenticationFOSUserBundle:奇怪的身份验证
【发布时间】:2011-11-30 17:18:02
【问题描述】:

我正在使用 Symfony2 进行一个项目,您必须登录才能看到该网站。我正在使用 FOSUserBundle 创建会员区。思路是这样的:如果有匿名用户访问该网站,我会系统地重定向到登录页面。

这是我的 security.yml :

providers:
    fos_userbundle:
        id: fos_user.user_manager

firewalls:
    dev:
        pattern:  ^/(_(profiler|wdt)|css|images|js)/
        security: false
        realm: "Acces reserve"

    login:
        pattern:   ^/(login$|register|resetting)  
        anonymous: true                           

    main:
        pattern: ^/                      
        form_login:                      
            provider:    fos_userbundle  
            remember_me: true            
        remember_me:
            key:         %secret%        
        anonymous:       true            
        logout:          true            


access_control:
    - { path: ^/backoffice, roles: ROLE_ADMIN }
    - { path: ^/, roles: ROLE_USER }

我认为它没有理由不工作;这是现在的问题。我观察到我在 /login 和其他区域的登录方式不同。例如,如果我自己登录,那么我是网站上名为“admin”且角色为“ROLE_USER”的用户,但是如果我转到 /login,我将登录为“anon”,根本没有任何角色。 同样的问题但更无聊:当一个新用户注册时,他登录 /login 页面而不是其他页面......所以他总是重定向到 /login 并且注销不会改变任何东西。 :/

你有什么想法吗?

谢谢!

附: : 是否可以手动清理 Symfony2 中的所有会话?因为我希望能够尝试其他事情,但在 Chrome 中我现在什么都做不了……我尝试清除浏览器缓存和 cookie,清除 Symfony 缓存等……没有任何变化,我仍然在 /login 页面上以“admin”身份登录 -_-

【问题讨论】:

  • 您为 /login 使用不同的(登录)防火墙
  • 我会尝试改变它,但我认为这不是问题;对于 /login 和网站之间的区别,好的。但是注册后就不再登录网站了,这很奇怪;仍然,注销应该可以工作..

标签: php symfony


【解决方案1】:

问题是您只为主防火墙指定了 fos_userbundle 提供程序,而不是为登录和开发防火墙指定了 fos_userbundle 提供程序。所以 fos_userbundle 根本不用于 /login 页面。

documentation 说你应该使用这个配置:

firewalls:
    main:
        pattern: ^/
        form_login:
            provider: fos_userbundle
            remember_me: true            
        remember_me:
            key:         %secret%        
        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: ^/backoffice, roles: ROLE_ADMIN }
    - { path: ^/, roles: ROLE_USER }

【讨论】:

  • 它解决了我的问题,谢谢!下次我应该在阅读其他资源之前阅读官方文档:)
猜你喜欢
  • 1970-01-01
  • 2010-12-17
  • 2013-05-17
  • 1970-01-01
  • 1970-01-01
  • 2011-01-01
  • 2014-04-06
  • 1970-01-01
  • 2021-10-25
相关资源
最近更新 更多