Symfony2 + FOSUSerBundle: перенаправление не работает - PullRequest
2 голосов
/ 15 декабря 2011

Я использую symfony2 и FOS UserBundle.

Я следовал документам FOSUSerBundle от https://github.com/FriendsOfSymfony/FOSUserBundle/blob/master/Resources/doc/index.md, но у меня нет перенаправления, если я иду на определенную страницу.Я должен быть перенаправлен на http/myapp/login, когда набираю http/myapp/myspecificPage/toto, но это не так.Даже если я не вошел в свое приложение.

My NamespaceLoginBundle распространяется на FOSUser.

Здесь мои файлы routing.yml:

login: 
    pattern: /login
    defaults: { _controller: NamespaceLoginBundle:Welcome:login }

login_check: 
    pattern: /login_check    
    defaults: { _controller: NamespaceLoginBundle:Welcome:checkUser }

fos_user_security:
    resource: "@FOSUserBundle/Resources/config/routing/security.xml"
    prefix: /

fos_user_profile:
    resource: "@FOSUserBundle/Resources/config/routing/profile.xml"
    prefix: /profile

fos_user_register:
    resource: "@FOSUserBundle/Resources/config/routing/registration.xml"
    prefix: /register

fos_user_resetting:
    resource: "@FOSUserBundle/Resources/config/routing/resetting.xml"
    prefix: /resetting

fos_user_change_password:
    resource: "@FOSUserBundle/Resources/config/routing/change_password.xml"
    prefix: /change-password

и security.yml

security:
    providers:
        fos_userbundle:
            id: fos_user.user_manager

    firewalls:
        main:
            pattern: ^/
            form_login:
                provider: fos_userbundle
            logout:       true
            anonymous:    true

    role_hierarchy:
        ROLE_ADMIN:       ROLE_USER
        ROLE_SUPER_ADMIN: ROLE_ADMIN

    access_control:
        # Liste des pages accessibles à tous les utilisateurs (ne pas toucher)
        - { path: ^/_wdt/, role: IS_AUTHENTICATED_ANONYMOUSLY }
        - { path: ^/_profiler/, role: IS_AUTHENTICATED_ANONYMOUSLY }
        - { path: ^/js/, role: IS_AUTHENTICATED_ANONYMOUSLY }
        - { path: ^/css/, role: IS_AUTHENTICATED_ANONYMOUSLY }
        - { path: ^/login$, role: IS_AUTHENTICATED_ANONYMOUSLY }
        - { path: ^/login_check$, role: IS_AUTHENTICATED_ANONYMOUSLY }
        - { path: ^/register$, role: IS_AUTHENTICATED_ANONYMOUSLY }
        - { path: ^/resseting$, role: IS_AUTHENTICATED_ANONYMOUSLY }

        # PAGES ACCESSIBLES AUX ADMINISTRATEURS
        - { path: ^/admin/, role: ROLE_ADMIN }

        # PAGES ACCESSIBLES AUX UTILISATEURS CONNECTES
        - { path: ^/change-password, role: ROLE_USER }

        # PAGES ACCESSIBLES A TOUS
        - { path: ^.*, role: IS_AUTHENTICATED_ANONYMOUSLY }

    acl:
        connection: default

Я пробовал некоторые модификации, но не работает.

Любая помощь, пожалуйста.

Увидимся

Сэм

Ответы [ 2 ]

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

Вам нужно указать роли

- { path: ^/.*, role: [IS_AUTHENTICATED_REMEMBERED, IS_AUTHENTICATED_FULLY] }

где:

IS_AUTHENTICATED_FULLY аутентифицируется путем ввода логина и пароля, IS_AUTHENTICATED_REMEMBERED - это пользователь, который выбрал «запомнить меня» при последнем входе в систему

0 голосов
/ 15 декабря 2011

РЕДАКТИРОВАТЬ: первый раз, неправильный ответ x)

Вам необходимо установить access_role, чтобы разрешить анонимному пользователю только на странице входа:

access_control:
    - { path: ^/login$, role: IS_AUTHENTICATED_ANONYMOUSLY }
    - { path: ^/register, role: IS_AUTHENTICATED_ANONYMOUSLY }
    - { path: ^/resetting, role: IS_AUTHENTICATED_ANONYMOUSLY }
    - { path: ^/logout, role: IS_AUTHENTICATED_ANONYMOUSLY }
    - { path: ^/, roles: ROLE_USER }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...