Несколько брандмауэров в Symfony2 - PullRequest
2 голосов
/ 09 марта 2012

У меня проблема с настройкой безопасности в symfony2.Мне нужны два межсетевых экрана для двух разных пользовательских сущностей.

Вот мои файлы конфигурации:

security.yml:

security:
    encoders:
        entity_owner:
            class: Pisteur\CoreBundle\Entity\OwnerAccount
            algorithm: sha512
            iterations: 5000
            encode_as_base64: false
        entity_business:
            class: Pisteur\BusinessBundle\Entity\BusinessOwner
            algorithm: sha512
            iterations: 5000
            encode_as_base64: false
    providers:
        entity_owner:
            name: entity_owner
            entity:
                class: Pisteur\CoreBundle\Entity\OwnerAccount
                property: username
        entity_business:
            name: entity_business
            entity:
                class: Pisteur\BusinessBundle\Entity\BusinessOwner
                property: username
    firewalls:
        entity_business:
            pattern: ^/business
            anonymous: ~
            form_login:
                check_path: /business/login_check
                login_path: /business/login
                default_target_path: /business/dashboard
            provider: entity_business
            logout:
                path: /logout
                target: /business/login
        entity_owner:
            pattern: ^/
            anonymous: ~
            form_login:
                login_path: /login
                check_path: /login_check
                default_target_path: /dashboard
            provider: entity_owner
            logout:
                path: /logout
                target: /login
    role_hierarchy:
        ROLE_ADMIN: [ROLE_USER, ROLE_BUSINESS]
        ROLE_SUPER_ADMIN: [ROLE_USER, ROLE_ADMIN, ROLE_ALLOWED_TO_SWITCH]
    access_control:
        - { path: ^/login, roles: IS_AUTHENTICATED_ANONYMOUSLY }
        - { path: ^/business/login, roles: IS_AUTHENTICATED_ANONYMOUSLY }
        - { path: ^/account, roles: ROLE_USER }
        - { path: ^/dashboard, roles: ROLE_USER }
        - { path: ^/business/dashboard, roles: ROLE_BUSINESS }
        - { path: ^/_internal, roles: IS_AUTHENTICATED_ANONYMOUSLY, ip: 127.0.0.1 }

Вот все мои маршруты:

security_login:
    pattern:  /login
    defaults: { _controller: "PisteurSecurityBundle:Security:login" }
    requirements: { _method: get }

login_check:
    pattern: /login_check

business_security_login:
    pattern:  /business/login
    defaults: { _controller: "PisteurSecurityBundle:BusinessSecurity:login" }
    requirements: { _method: get }

business_login_check:
    pattern: /business/login_check

logout:
    pattern: /logout

Форма входа для OwnerAccount:

<form id="login-form" action="{{ path('login_check') }}" method="post">
            <label><input id="username" type="text" name="_username" /></label>
            <label><input id="password" type="password" name="_password" /></label>
            <button class="btn custom large orange-button" type="submit" id="login-button">{% trans from "login" %}login{% endtrans %}</button>
 </form>

Форма входа для BusinessOwner:

<form id="login-form" action="{{ path('business_login_check') }}" method="post">
            <label><input id="username" type="text" name="_username" /></label>
            <label><input id="password" type="password" name="_password" /></label>
            <button class="btn custom large orange-button" type="submit" id="login-button">{% trans from "login" %}login{% endtrans %}</button>
</form>

Когда я регистрируюсь с помощью формы OwnerAccount, она работает и перенаправляет мою на / панель управления,Когда я регистрируюсь с помощью формы BusinessOwner, она не работает и перенаправляет на / login (должно быть / business / login) с ошибкой «BadCredentials»

Я не уверен, почему, но кажется, что только entity_ownerиспользуется (потому что он перенаправляет на / login из / business / login)

Это что-то не так в моей конфигурации?

Ответы [ 2 ]

3 голосов
/ 12 марта 2012

Попробуйте что-то вроде ^/(?!business) для шаблона entity_owner, это может помешать шаблону entity_owner соответствовать шаблону entity_business.

2 голосов
/ 12 марта 2012

Переместить все ресурсы вашего владельца в / владельца.Измените шаблон entity_owner на ^/owner и перенаправьте главную страницу в /owner.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...