0

こんにちは、私は実際に非常に特定の問題に関するヒントやアイデアを得ようとしています. テクノロジ コンテキストは、JSF 2.1 を使用した Java Web アプリです。

だから私はJSF 2.1を搭載したシンプルなJava eeアプリを持っています。構造は次のとおりです

\webapp
   \WEB-INF
      \templates 
       header.xhtml
       menu.xhtml
      web.xml 
   \secured 
      \operation1
       op1.xhtml
     \operation2
       op2.xhtml
     \operation3
      op3.xhtml 
    userhome.xhtml
  login.xhtml

「ユーザー」Beanが設定されていない場合に備えて@WebFilter、アクセスを制限するものがあります(実際にはセッションスコープBean)。/secured/*

ログインと同時に、ユーザー資格情報に応じて動的メニューを作成します。このメニュー (MenuItems) は、1 つ以上の操作 (xhtml ページ) を指します。

これまでのところ、ユーザーはログインし、メニューは動的であり、リンクが生成されており、クリックすると、実行する必要がある操作に移動できます。

私の問題は、これらのページの絶対 URL へのアクセスを制限する洗練された方法を決定できないことです。ユーザー 1 が操作 1 を実行することを「承認」されているが、操作 2 または操作 3 を実行することは許可されていない場合、現在、実際の Web ユーザーが URL に書き込む場合、彼のセッション状態をチェックし、一般的なルール (ナビゲーション ルール?) を適用する最もエレガントな方法を見つけることができません。 bar 操作の絶対パス。

「/secured/operation1/op2.xhtml」

そのような要件を達成するための最もJSF2と互換性のある方法は何ですか?

個別のページごとに preRenderView を試しましたがopxx.xhtml、残念ながら機能しませんでした + 各操作で繰り返すのは好きではありません

ヒントをありがとうございました。

4

1 に答える 1

2

Web アプリケーションのセキュリティは、より高度なトピックです。基本的に、次の 2 つの方法があります。

  • コンテナベース: これは、Tomcat のようなサーブレットコンテナがあなたのために仕事をすることを意味します (推奨)
  • アプリケーションベース:自分で仕事をしなければなりません

コンテナ ベースのセキュリティの設定方法については、こちらで詳しく説明しています。要約すると、ユーザー名とパスワードのフィールドに特定のアクションと特定の ID を持つ単純なフォーム (JSF フォームではありません!) を実装する必要があります。その後、web.xml ファイルを使用して特定の URL パターンへのアクセスを簡単に制限できます。web.xml ファイルでは、特定のユーザー ロールに対して特定の URL パターンへのアクセスを制限します。ユーザー名からユーザー ロールへのマッピングは、セキュリティ レルムによって行われます。セキュリティ レルムの設定方法については、Tomcat などについて説明しています

独自にセキュリティを実装する場合は、要求されたすべての URL を検査し、ログインしていないユーザーをログイン フォームに転送するか、ユーザーが承認されている場合は要求を通過させる ServletFilter を実装する必要があります。ユーザーがページを表示する権限がない場合は、ユーザーをエラー ページに転送する必要があります。ServletFilter では CDI インジェクションが機能しないため、ユーザー (ログイン、権限) に関する情報を格納する Bean を HttpSession からルックアップする必要があります。

于 2013-10-21T18:06:35.787 に答える