Symfony 4 - Все страницы только для зарегистрированных - PullRequest
0 голосов
/ 12 декабря 2018

Мне нужно "закрыть" мое приложение только для зарегистрированных пользователей (не важно роли), поэтому я установил access_control в:

access_control:
         - { path: ^/login, roles: IS_AUTHENTICATED_ANONYMOUSLY }
         - { path: ^/forgot-password, roles: IS_AUTHENTICATED_ANONYMOUSLY }
         - { path: ^/, roles: IS_AUTHENTICATED_FULLY }
         - { path: ^/admin, roles: [ROLE_ADMIN, ROLE_SUPER_ADMIN] }

, но я все еще могу перейти на ^/ или любую другуюстраница (кроме admin) в качестве гостя.Что такое плохо?Вот мои брандмауэры:

firewalls:
    dev:
        pattern: ^/(_(profiler|wdt)|css|images|js)/
        security: false
    main:
        pattern: ^/
        anonymous: ~
        guard:
            authenticators:
                - App\Security\LoginFormAuthenticator
        logout:
            path: app_logout

Ответы [ 2 ]

0 голосов
/ 17 декабря 2018

Убедитесь, что у вас есть и заказаны роли и access_control, например:

security:
    ## Previous parameters

    role_hierarchy:
        ROLE_ADMIN: ROLE_USER
        ROLE_SUPER_ADMIN: ROLE_ADMIN

В разделе firewalls

firewalls:
    dev:
        pattern: ^/(_(profiler|wdt)|css|images|js)/
        security: false
    main:
        pattern: ^/ #The most important in your case
        logout: true
        anonymous: true

Затем в разделе access_control вы можете сделать так:это:

access_control:
     #LOGIN
     - { path: ^/login, role: IS_AUTHENTICATED_ANONYMOUSLY }
     - { path: ^/forgot-password, role: IS_AUTHENTICATED_ANONYMOUSLY }
     #Default
     - { path: ^/, role: ROLE_AGENT }
0 голосов
/ 12 декабря 2018

Попробуйте, пожалуйста:

 access_control:
    - { path: ^/(register|login)?$, roles: IS_AUTHENTICATED_ANONYMOUSLY}
    - { path: ^/?$, roles: ROLE_USER}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...