php - Symfony:多个防火墙上下文 - 用户被转发到错误的上下文

标签 php security symfony authentication

我有一个前端登录名(可选)和另一个管理面板登录名,这是强制性的。

当用户转到 fe_login 时,他们可以登录到 frontend 上下文。这没关系!

当他们转到 admin_login 时,他们应该能够登录到 admin 上下文。这不行

问题是当我转到 /admin 时,我被重定向到 fe_login 而我应该被重定向到 admin_login

这是我的 security.yml:

security:
    encoders:
        App\FrontendBundle\Controller\UserController:
            algorithm: bcrypt
        App\AdminBundle\Controller\UserController:
            algorithm: bcrypt
        App\Entity\User:
            algorithm: bcrypt
    providers:
        administrators:
            entity: { class: AppEntity:User, property: username }

    firewalls:
        dev:
            pattern: ^/(_(profiler|wdt)|css|images|js)/
            security: false
        admin:
            pattern: ^/admin
            form_login:
                login_path: admin_login
                check_path: admin_auth
                csrf_provider: form.csrf_provider
            logout:
                path: admin_logout
                target: admin_login
        frontend:
            anonymous: ~
            form_login:
                login_path: fe_login
                check_path: fe_auth
                csrf_provider: form.csrf_provider
                always_use_default_target_path: true
                default_target_path: fe_landing
            logout:
                path: fe_logout
                target: fe_landing
        login:
            pattern: ^/admin/login
            anonymous: ~

        default:
            anonymous: ~
    access_control:
        - { path: ^/admin/login, roles: IS_AUTHENTICATED_ANONYMOUSLY }
        - { path: ^/admin, roles: [ROLE_ADMIN,ROLE_MANAGER,ROLE_DRIVER,ROLE_PARTNER] }

知道我做错了什么吗?

最佳答案

这是我的security.yml,但正如我所说,它是针对 Symfony2.0 的,也许您会发现一些提示。

security:
    encoders:

### ...

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

providers:
    fos_userbundle:
        id: fos_user.user_manager
    admin_adminbundle:
        id: custom_admin_manager_id

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

    admin:
        pattern: ^/admin/

        form_login:
            check_path:         /admin/check-login
            login_path:         /admin/login
            provider:           admin_adminbundle
            csrf_provider:      form.csrf_provider
            post_only:          true
            success_handler:    login_success_handler
            failure_handler:    admin_login_failure_handler
            username_parameter: login_username
            password_parameter: login_password
            remember_me:        false
        logout:
            path:               /admin/logout
            target:             /admin/login
        anonymous: true

    frontend:
        pattern: ^/

        form_login:
            check_path:         /frontend/check-login
            login_path:         /frontend/login
            provider:           fos_userbundle
            csrf_provider:      form.csrf_provider
            post_only:          true
            success_handler:    login_success_handler
            failure_handler:    login_failure_handler
            username_parameter: login_username
            password_parameter: login_password
        logout:
            path:               /frontend/logout
            success_handler:    logout_success_handler
        anonymous: true

access_control:
    - { path: ^/frontend/login$, role: IS_AUTHENTICATED_ANONYMOUSLY }
    - { path: ^/admin/login$, role: IS_AUTHENTICATED_ANONYMOUSLY }

关于php - Symfony:多个防火墙上下文 - 用户被转发到错误的上下文,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26085773/

相关文章:

php - 使用 Laravel 在 Json 列中搜索

php - 如何使用 php 显示 MySQL 数据库中的小数和日期数组

android - sqlcipher - sqlcipher 有多安全?它被黑客入侵了吗?

php - 根据 div/table 中的某些字符应用 CSS

security - 在 RSS 提要 URL 中嵌入用户名/密码时是否存在任何安全隐患?

Android NFC应用安全测试

php - symfony 2 - 一对一映射

php - 在 Symfony2 中创建 Bundle 后出现 FileLoaderImportCircularReferenceException

gitignore - Symfony3 和 .gitignore

php - Ion Auth + Codeigniterlogged_in 始终重定向到登录