Как интегрировать маршруты и контроль доступа безопасности - PullRequest
3 голосов
/ 03 августа 2011

Мне нужно скрыть некоторые ссылки в шаблоне, если маршрут или путь не разрешены для зарегистрированного пользователя.Примерно так:

{% if allowedroute 'fos_user_security_logout' %}    
<a href="{{ path('fos_user_security_logout') }}" class="action-logout">
    {{ 'layout.logout'|trans({}, 'FOSUserBundle') }}
    </a>
{% endif %}

Как определить, разрешено ли в security access_control для зарегистрированного пользователя?Может быть, есть такая функциональность, как эта:

$securityContext->isRouteGranted('routeName');
or
$securityContext->isUriGranted('uri/path');

Ответы [ 2 ]

1 голос
/ 03 августа 2011

Насколько я знаю, нет возможности проверить доступ к маршруту из ветки. Однако, так как вам нужно настроить security.yml access_control маршруты с ролями пользователей, вы МОЖЕТЕ проверить аутентификацию на основе ролей в вашем шаблоне:

{% if is_granted('IS_AUTHENTICATED_REMEMBERED') %}
// logout link here
{% endif %}

Это не так динамично, но если ваши маршруты сильно не меняются, это не должно быть проблемой.

0 голосов
/ 08 августа 2011

Если вы хотите скрыть элемент для KnpMenuBundle - , вам необходимо расширить классы рендерера и элементов меню для поддержки разрешений .Вы также можете попробовать взглянуть на SecurityExtraBundle для определения разрешений на действия контроллера и поиграть с ним, чтобы связать разрешения безопасности для маршрутов - насколько мне известно, в Sf2 его пока нет.Вы можете попробовать внутри вашего контроллера следующий аннотированный пример:

/**
 * @Route("/create", name="create_group")
 * @Secure(roles="ROLE_CREATE_GROUP")
 * @Template()
 */
public function createGroupAction(Request $request) {
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...