0

我以为我终于能够使用 Symfony 2 正确管理登录。但是当我在登录后被重定向到另一个页面时,系统探查器会告诉我用户已登录但未通过身份验证,并且角色:ROLE_USER.

但是,如果我返回登录页面,我正确地认为用户已登录,已通过身份验证并具有角色:ROLE_USER

我希望这是一个愚蠢的错误,因为我最近开始使用 Symfony。希望有人已经遇到过这个问题?谁能帮我?

编辑 1:这是我的 security.yml

jms_security_extra:
    secure_all_services: false
    expressions: true

security:
    encoders:
        Wearplay\UserBundle\Entity\User: 
            algorithm:        sha1
            encode_as_base64: false
            iterations:       1

    role_hierarchy:
        ROLE_ADMIN:       ROLE_USER
        #ROLE_SUPER_ADMIN: [ROLE_USER, ROLE_ADMIN, ROLE_ALLOWED_TO_SWITCH]

    providers:
        user:
            entity: { class: WearplayUserBundle:User }

    firewalls:
        main:
            pattern:  ^/
            provider: user
            form_login:
                check_path: login_check
                login_path: login
                default_target_path: /home
            anonymous: true
            remember_me:
                key:      "%secret%"
                lifetime: 2232000 
                path:     /
                domain:   ~ 
            logout:
                path:   /logout
                target: /home

        #secured_area:
        #    provider: user
        #    pattern:    ^/
        #    form_login:
        #        check_path: login_check
        #        login_path: login
        #        default_target_path: home
        #    anonymous: ~

    access_control:
        - { path: ^/login, roles: IS_AUTHENTICATED_ANONYMOUSLY, requires_channel: http }
        #- { path: ^/logout, roles: IS_AUTHENTICATED_FULLY, requires_channel: https }
        #- { path: ^/home, roles: ROLE_USER, requires_channel: https }
        #
        # You must uncomment the two following rules to restrict access to paths
        # starting with the /_internal prefix to only localhost
        #- { path: ^/_internal/secure, roles: IS_AUTHENTICATED_ANONYMOUSLY, ip: 127.0.0.1 }
        #- { path: ^/_internal/secure, roles: ROLE_NO_ACCESS }
4

1 回答 1

0

尝试:

jms_security_extra:
    secure_all_services: false
    expressions: true

security:
    encoders:
        Wearplay\UserBundle\Entity\User: 
            algorithm:        sha1
            encode_as_base64: false
            iterations:       1

    role_hierarchy:
        ROLE_ADMIN:       ROLE_USER

    providers:
        user:
            entity: { class: WearplayUserBundle:User }

    firewalls:
        login_firewall:
            pattern: ^/login$
            anonymous: ~ 
        main_firewall:
            pattern:  ^/
            provider: user
            form_login:
                check_path: /login_check
                login_path: /login
                default_target_path: /home
            remember_me:
                key:      "%secret%"
                lifetime: 2232000 
                path:     /
                domain:   ~ 
            logout:
                path:   /logout
                target: /home

    access_control:
        - { path: ^/login, roles: IS_AUTHENTICATED_ANONYMOUSLY, requires_channel: http }
        - { path: ^/, roles: ROLE_USER, requires_channel:https }
于 2013-03-25T18:32:05.553 回答