2016-08-01 3 views
2

Я использую Symfony 3, и у меня проблема при использовании access_control в app/config/security.yml.access_control в Symfony3 не работает

Я установил FOSUserBundle, и я обнаружил, что маршруты/логин/сброс и/регистр по-прежнему доступны, когда пользователь имеет роль IS_AUTHENTICATED_ANONYMOUSLY. Я использую базовую конфигурацию, как это объясняется в the documentation, но он не работает:

access_control: 
    - { path: ^/login$, role: IS_AUTHENTICATED_ANONYMOUSLY } 
    - { path: ^/register, role: IS_AUTHENTICATED_ANONYMOUSLY } 
    - { path: ^/resetting, role: IS_AUTHENTICATED_ANONYMOUSLY } 
    - { path: ^/admin/, role: ROLE_ADMIN } 

Есть ли вероятность того, что ошибка происходит из другого файла? Я потратил неделю на поиски ответа, и я не могу понять, в чем проблема. Кроме того, я попытался переустановить Symfony в другом проекте с нуля, чтобы попытаться создать новую конфигурацию и возникнуть такая же ошибка.

Благодарим за помощь!

Screenshot

+0

По умолчанию, маршруты '/ login','/resetting' и '/register' будет доступен даже при входе в систему. Какая ошибка вы принимаете? – NDM

+0

Я не получаю никаких ошибок, и я могу войти в систему успешно, но затем я могу получить доступ к этим маршрутам, и имя пользователя отображается над формой со ссылкой на выход. Другими словами, я могу снова войти в систему ... – Jacky

+0

В чем проблема? Не похоже, что есть какие-то проблемы, так как вы говорите, что можете получить доступ к этим маршрутам, когда заданы анонимные, что правильно ... –

ответ

1

По умолчанию маршрутов /login, /resetting и /register будет по-прежнему доступны даже при входе в

Если вы не хотите этого, вы можете сделать несколько вещей:.

1

Там нет никаких проблем, то вполне нормально, что вы получили доступ к этим маршрутам проверки подлинности или нет:

IS_AUTHENTICATED_ANONYMOUSLY: Все пользователи (даже анонимные) имеют это - это полезно, когда URL-адреса с правами доступа для обеспечения доступа доступны

Это роль нижнего уровня.

Но вы можете сделать это в вашем fonction, который управляет логином, если вы хотите быть перенаправлены на /admin, когда вы хотите получить доступ к /login быть зарегистрированным

if ($this->get('security.authorization_checker')->isGranted('ROLE_ADMIN')) { 
    return $this->redirect($this->generateUrl('your_route_path_to_admin')); 
} 
Смежные вопросы