Принудительный выход из системы не работает (acces_denied_url :) - PullRequest
0 голосов
/ 04 апреля 2019

Итак, я сделал так, чтобы Role_User мог заходить на сайт только с определенного IP-адреса. Все работает как чудо, за исключением случаев, когда пользователь подключается с другого IP, я пытаюсь перенаправить его в / en / logout. Но выскакивает ошибка Msgstr "Вы должны активировать конфигурацию брандмауэра безопасности выхода из системы". Очень нужна помощь.

security:
    encoders:
        App\Entity\User: bcrypt

    providers:
        fos_userbundle:
            id: fos_user.user_provider.username_email

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

        secured_area:
            pattern: ^/
            user_checker: App\Security\UserChecker
            anonymous: true
            stateless: false

            guard:
                authenticators:
                    - App\Security\TokenAuthenticator

            remember_me:
                secret:   '%kernel.secret%'
                lifetime: 604800
                path:     /

            form_login:
                provider: fos_userbundle
                check_path: fos_user_security_check
                login_path: fos_user_security_login
                csrf_token_generator: security.csrf.token_manager

            logout:
                path: fos_user_security_logout
                target: /(%app_locales%)/login
            access_denied_url: /(%app_locales%)/logout
    role_hierarchy:
        ROLE_USER:        ROLE_USER
        ROLE_TEAMLEAD:    ROLE_CUSTOMER
        ROLE_ADMIN:       ROLE_TEAMLEAD
        ROLE_SUPER_ADMIN: ROLE_ADMIN

    access_control:
        - { path: '^/(%app_locales%)/timesheet', role: ROLE_USER, ip: [IP.IP.IP.IP] }
        - { path: '^/(%app_locales%)/timesheet', role: ROLE_ADMIN }
        - { path: '^/(%app_locales%)/timesheet', roles: ROLE_NO_ACCESS }
        - { path: '^/(%app_locales%)$', role: IS_AUTHENTICATED_ANONYMOUSLY }
        - { path: '^/(%app_locales%)/login', role: IS_AUTHENTICATED_ANONYMOUSLY }
        - { path: '^/(%app_locales%)/register', role: IS_AUTHENTICATED_ANONYMOUSLY, ip: [IP.IP.IP.IP] }
        - { path: '^/(%app_locales%)/resetting', role: IS_AUTHENTICATED_ANONYMOUSLY, ip: [IP.IP.IP.IP] }
        - { path: '^/(%app_locales%)/', roles: ROLE_USER, ip: [IP.IP.IP.IP] }
        - { path: '^/api', roles: IS_AUTHENTICATED_REMEMBERED, ip: [IP.IP.IP.IP] }
        - { path: '^/(%app_locales%)/login$', roles: ROLE_NO_ACCESS }

Ответы [ 2 ]

0 голосов
/ 06 апреля 2019

Я думаю, что поверх записи access_control, которую разместил Майкл, вы должны изменить

access_denied_url: /(%app_locales%)/logout

в

access_denied_url: fos_user_security_logout

Это, похоже, проблема в подобном случае

0 голосов
/ 04 апреля 2019

Вам необходимо указать путь для выхода из системы в вашем списке access_control с правильными параметрами.Теперь ваш /en/logout авторизован по ролям ROLE_USER и ip [IP.IP.IP.IP].Вам нужно добавить следующую строку:

access_control:
    ...
    - { path: '^/(%app_locales%)/logout', roles: ROLE_USER }
    ...

Как видите, я удалил зависимость от IP-адреса для авторизации по пути /en/logout.Теперь это зависит только от ROLE_USER роли вашего пользователя.

...