3

ログインしたユーザーにルートまたはパスが許可されていない場合、テンプレートでいくつかのリンクを非表示にする必要があります。このようなもの:

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

ログインしたユーザーのセキュリティ access_control で許可されているかどうかを判断する方法は? 次のような機能があるかもしれません。

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

2 に答える 2

1

私の知る限り、twig からルートへのアクセスを確認する方法はありません。ただし、ユーザー ロールを使用して security.yml access_control ルートを設定する必要があるため、テンプレートでロールベースの認証を確認できます。

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

それほど動的ではありませんが、ルートが大幅に変更されない限り、問題にはなりません。

于 2011-08-02T22:09:29.213 に答える
0

KnpMenuBundle で項目を非表示にする場合は、権限をサポートするためにメニュー レンダラーとメニュー項目クラスを拡張する必要がありますまた、コントローラ アクションにアクセス許可を設定するためにSecurityExtraBundleを調べて、それを使ってセキュリティ アクセス許可をルートにバインドすることもできます。私の知る限り、現時点では Sf2 にはありません。次の注釈付きの例をコントローラー内で試すことができます。

/**
 * @Route("/create", name="create_group")
 * @Secure(roles="ROLE_CREATE_GROUP")
 * @Template()
 */
public function createGroupAction(Request $request) {
于 2011-08-08T09:53:08.443 に答える