1

JDBCレルムでコンテナ認証を使用する方法を学びました。インターネットでよく検索しましたが、JSF認証については次の記事以外は見つかりませんでした。 JSF認証

私の目標は、直接リンクを使用して保護されたページにアクセスすることを避け、認証されたユーザー権限に基づいてメニュー項目とフォームコンポーネントを表示/非表示にすることです。最後の部分は、JSFタグのレンダリングされた属性を使用して実装できますが、独自のダーティで高結合のソリューションを作成する前に、役立つ特定のベストプラクティスやライブラリがあるかどうか疑問に思います。実際、条件付きでレンダリングされるコンポーネントの数は非常に多いので、それぞれに特定の関数を記述したくありません。おそらく、認証されたユーザーごとに、条件付きでレンダリングされたすべてのコンポーネントの名前(id)を持つマップと、Stringパラメーター(コンポーネントの一意の名前/ ID)を持つ単一の関数を作成できます。それは良い考えですか?どのような選択肢がありますか?私はしません

ありがとうフィリッポ

4

2 に答える 2

2

Java EE 6の式言語バージョンでは、次のような式を使用できるはずです。

<h:inputText rendered="#{facesContext.externalContext.isUserInRole('foo')}" />

古いバージョンでは、次の形式のマネージドBeanを作成できます。

public class RoleMap implements Map<String, Boolean> {

    public Boolean get(Object key) {
        ExternalContext extCtxt = FacesContext.getCurrentInstance()
                                              .getExternalContext();
        return extCtxt.isUserInRole(key.toString());
    }

    //TODO: other methods; mostly throwing UnsupportedOperationException

テストは、次の形式で表現できます。

<h:inputText rendered="#{roleMap['foo']}" />

サードパーティのフレームワークは、ApacheTomahawkライブラリのvisibleOnUserRoleコンポーネント属性などの他のオプションを提供します。

于 2011-08-12T09:01:23.050 に答える
1

専用のセキュリティ フレームワークであるApache Shiroを見てください(Spring Security よりも使いやすいと思われます)。

于 2011-08-12T08:47:21.703 に答える