15.6.3. ユーザーインターフェースのセキュリティ


適切に設計されたインターフェースはユーザーに使用許可がないオプションはそのユーザーには表示しません。 Seam Security はユーザーの権限に応じて個別のコントロールやページセクションの条件的な表示が可能で、 コンポーネントのセキュリティに使用する式と同じ EL 式を使用します。
このセクションではインターフェースのセキュリティ例についていくつか見ていきます。 まず、 ユーザーがまだログインしていない場合にのみ表示させたいログインフォームがあるとします。 identity.isLoggedIn() プロパティで次のように記述することができます。
<h:form class="loginForm" rendered="#{not identity.loggedIn}">
Copy to Clipboard Toggle word wrap
ユーザーがログインしていなければこのログインフォームが表示されます (実にシンプルですね)。 次に、 このページにメニューがあり、 manager ロールを持っているユーザーだけがアクセス可能な操作をいくつか持たせたいとします。このような場合の 1 つの方法として次のように記述することができます。
<h:outputLink action="#{reports.listManagerReports}" 
   rendered="#{s:hasRole('manager')}"> Manager Reports 
</h:outputLink>
Copy to Clipboard Toggle word wrap
これもシンプルで、 ユーザーが manager ロールのメンバーでなければ outputLink は表示されません。 rendered 属性は一般に制御そのものに使われたり、 前後にある <s:div><s:span> 制御で使われます。
次にもう少し複雑な条件的な表示の例を見てみましょう。 ページに h:dataTable コントロールがあり、 特定の権限を持つユーザーだけにその記録に操作リンクを表示させたいとします。 s:hasPermission EL 関数によりオブジェクトパラメータを使ってユーザーがそのオブジェクトに対して必要なパーミッションを持っているかどうかを判断することができます。 安全なリンクを持つ dataTable は次のようになります。
<h:dataTable value="#{clients}" var="cl">
  <h:column>
    <f:facet name="header">Name</f:facet>
    #{cl.name}
  </h:column>
  <h:column>
    <f:facet name="header">City</f:facet>
    #{cl.city}
  </h:column>
  <h:column>
    <f:facet name="header">Action</f:facet>
    <s:link value="Modify Client" action="#{clientAction.modify}"
            rendered="#{s:hasPermission(cl,'modify')"/>
    <s:link value="Delete Client" action="#{clientAction.delete}"
            rendered="#{s:hasPermission(cl,'delete')"/>
  </h:column>
</h:dataTable>
Copy to Clipboard Toggle word wrap
トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

Theme

© 2025 Red Hat