4

JSF2.0とPrimeFacesを使用してWebアプリプロジェクトを開始しています。要件の1つは、ユーザーの役割に基づいて異なるページコンテンツを表示することです。たとえば、管理者のみがメニュー項目-ユーザー管理を表示する必要があります。

セキュリティ面では、春のセキュリティに行きます。

これをエレガントな方法でどのように達成できますか?すべての人のためにxhtmlテンプレートを作成してから、役割固有のUIアイテムを使用して役割ごとに異なるページを作成する必要がありますか?

ありがとうございました

4

1 に答える 1

10

renderedたとえばサブメニューの場合、コンポーネントで属性+ロールチェックを使用するだけです。

<p:submenu label="#{msg['header.management']}" rendered="#{request.isUserInRole('INTERNO')}">
        <p:submenu label="#{msg['header.roles']}" icon="ui-icon-contact">
                <p:menuitem value="#{msg['header.newRole']}" url="/pages/addRole.jsf" />
            <p:menuitem value="#{msg['header.mngRoles']}" url="/pages/viewRole.jsf" />
</p:submenu>

「INTERNO」であることは、春に定義された役割です。これはかなりエレガントだと思います。

そのページ(または一連のページ)のナビゲーションを無効にするにはspring-security.xml、たとえば次のようにインターセプトを追加する必要があります。

<intercept-url pattern="/pages/*Role*" access="hasRole('INTERNO')" />
于 2012-10-04T08:38:49.457 に答える