В доступе отказано с контролем доступа - PullRequest
0 голосов
/ 07 ноября 2018

Я использую Symfony 4.1.7 в моем security.yaml, у которого есть этот контроль доступа:

access_control:
    # master:
    - { path: ^/master, roles: ROLE_MASTER }
    # manager:
    - { path: ^/.*/manager, roles: ROLE_MANAGER }
    # main:
    - { path: ^/, roles: IS_AUTHENTICATED_ANONYMOUSLY }

когда я открываю второй URL-адрес (/foo/manager) и не авторизован, я буду перенаправлен на путь входа в систему, мне нужно вернуть доступ, denaid не перенаправить на вход в систему. Моя последняя цель - вызвать прослушиватель событий для добавления роли, чтобы авторизовать пользователя из прослушивателя событий.

Обновление: Вот мой раздел брандмауэра безопасности:

 main:
        pattern: ^/
        user_checker: App\Security\Checker\UserChecker
        anonymous: ~
        provider: default
        context: primary
        simple_form:
            authenticator: App\Security\Authenticator\UserAuthenticator
            check_path: login
            login_path: login
            username_parameter: phone
            password_parameter: password
            use_referer: true
        logout:
            path: logout
        remember_me:
            secret: '%kernel.secret%'
            lifetime: 604800
            path: /
            remember_me_parameter: remember_me

Ответы [ 2 ]

0 голосов
/ 08 ноября 2018

Вам нужно настроить login_path en the security.yml

Пример:

providers:
    fos_userbundle:
        id: fos_user.user_provider.username_email
    in_memory: { memory: ~ }
encoders:
    FOS\UserBundle\Model\UserInterface: sha512
firewalls:
    dev:
        pattern: ^/(_(profiler|wdt)|css|images|js)/
        security: false
    main:
        pattern:             .*
        context:            user
        form_login:
            provider:       fos_userbundle
            login_path:     /login
            use_forward:    false
            check_path:     /login_check
            failure_path:   null

Symfony Doc.

0 голосов
/ 07 ноября 2018

Вы должны разрешить пользователям доступ к этому пути и вместо этого использовать свой контроллер для проверки роли пользователя.

$this->denyAccessUnlessGranted('ROLE_MANAGER ', null, 'Unable to access this page!');

или

$this->isGranted('ROLE_MANAGER');

В зависимости от того, что вы хотите сделать.

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