2017-02-09 24 views
0

В documentation есть много примеров способов управления доступом для определенных маршрутов.Symfony 2 - access_control vs isGranted() для управления доступом в контроллере

Там у меня access_control блок в security.yml, где я описываю, какие страницы могут быть доступны какой роли:

security: 
    access_control: 
     - { path: ^/$, roles: IS_AUTHENTICATED_ANONYMOUSLY } 
     - { path: ^/trainee, roles: ROLE_TRAINEE } 
     - { path: ^/university, roles: ROLE_UNIVERSITY_PROFESSOR } 
     - { path: ^/company, roles: ROLE_COMPANY_TUTOR } 

Теперь эти маршруты могут быть доступны только с этими ROLES и никто другой.

В этих маршрутах у меня есть некоторые формы, и мне интересно, достаточно ли для этого вида access_control другим ROLE?

Я видел несколько примеров в Интернете, где люди Puting isGranted() в форме представления:

if ($form->isValid()) { 
    if (!$authorizationChecker->isGranted('ROLE_TRAINEE')) { 
     throw new AccessDeniedException(); 
    } 

    // ... 
} 

Но снова здесь, я не уверен, что они защищают эти маршруты из access_control или только с внутренней стороны контроллера с isGranted().

Может кто-нибудь объяснить разницу, и если я также должен защищать формы с помощью isGranted(), то даже маршруты защищены от access_control?

ответ

0

имея правила контроля доступа достаточно, если форма находится за URI, который соответствует регулярному выражению в access_control в (почему не просто проверить это ...?)

+0

Я думал, что если вы не можете получить доступ к этой странице может быть можно каким-либо образом отправить форму с использованием JS из-за пределов платформы? Или это то, о чем я не должен беспокоиться? Я не знаю, как маршруты защищены. –

+0

Независимо от того, как отправляются данные te, если он отправлен в конечную точку, которая находится за правилом контроля доступа, будет применяться правило управления доступом –