FOSUserBundle: странная аутентификация - PullRequest
0 голосов
/ 30 ноября 2011

Я работаю над проектом с 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 }

Я думаю, что для этого нет причинэто не работать;вот проблема сейчас.Я заметил, что я не вошел так же в / логин и в других областях.Например, если я регистрируюсь сам, то я являюсь пользователем с именем «admin» с ролью «ROLE_USER» на веб-сайте, НО, если я захожу затем в / login, я регистрируюсь как «anon» без какой-либо роли.Та же проблема, но более скучная: когда новый пользователь регистрируется, он регистрируется на странице / login, но не на других страницах ... Так что он всегда перенаправляет на / login, и выход из системы ничего не меняет.: /

У вас есть идея?

Спасибо!

PS: Можно ли вручную очистить все сеансы в Symfony2?потому что я хотел бы иметь возможность попробовать другие вещи, но в Chrome я просто пока ничего не могу сделать ... Я попытался очистить кеш браузера и куки, очистить кэш Symfony и т. д ... Ничего не меняется, явсе еще зарегистрирован как "admin" на странице / login -_-

1 Ответ

1 голос
/ 01 декабря 2011

Дело в том, что вы указали провайдера fos_userbundle только для основного брандмауэра, а не для брандмауэров входа и разработки. Таким образом, fos_userbundle вообще не используется для страницы / login.

Документация говорит, что вы должны использовать эту конфигурацию:

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 }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...