6.1.9. 認可チェックハンドラ

本ハンドラでは、 リクエストに対する認可チェック を行う。

認可チェックは、ライブラリの 認可チェック を使用して行う。 そのため、本ハンドラを使用するには、 PermissionFactory を実装したクラスを本ハンドラに設定する必要がある。

本ハンドラでは、以下の処理を行う。

  • 認可チェック

処理の流れは以下のとおり。

../../../../_images/flow4.png

6.1.9.2. モジュール一覧

<dependency>
  <groupId>com.nablarch.framework</groupId>
  <artifactId>nablarch-common-auth</artifactId>
</dependency>

6.1.9.3. 制約

スレッドコンテキスト変数管理ハンドラ より後ろに配置すること
本ハンドラではスレッドコンテキスト上に設定されたリクエストIDとユーザIDをもとに認可チェックを行うため、 スレッドコンテキスト変数管理ハンドラ より後ろに本ハンドラを配置する必要がある。
内部フォーワードハンドラ より後ろに配置すること
内部フォーワードが行われた際に、フォーワード先のリクエストIDをもとに 認可チェックを行いたい場合は、 内部フォーワードハンドラ より後ろに本ハンドラを配置する必要がある。
HTTPエラー制御ハンドラ より後ろに配置すること
認可チェックエラーの場合に表示するエラーページを指定するため、 HTTPエラー制御ハンドラ より後ろに本ハンドラを配置する必要がある。

6.1.9.4. リクエストに対する認可チェック

ログイン中のユーザが、現在のリクエスト(リクエストID)に対して権限を持っているかをチェックする。 チェックの詳細は、 認可チェック を参照。

権限がある場合
業務ロジック画面表示の制御 で参照できるように、 認可チェックに使用した Permission をスレッドローカルに設定する。 そして、後続ハンドラを呼び出す。
権限がない場合
Forbidden(403) を送出する。

チェック対象のリクエストIDをフォーワード先のリクエストIDに変更したい場合は、 PermissionCheckHandler.setUsesInternalRequestId でtrueを指定する。デフォルトはfalseである。

6.1.9.5. 権限がない場合に表示するエラーページを指定する

権限がない場合に表示するエラーページは、HTTPエラー制御ハンドラで指定する。 指定方法は、 デフォルトページの設定 を参照。

6.1.9.6. 特定のリクエストを認可チェックから除外する

ログイン前のリクエストなど、認可チェックを除外したいリクエストがある場合は、 PermissionCheckHandler.setIgnoreRequestIds で指定する。

<component name="permissionCheckHandler"
           class="nablarch.common.permission.PermissionCheckHandler">
  <property name="permissionFactory" ref="permissionFactory"/>
  <!-- 認可チェックを除外するリクエストIDをカンマ区切りで指定する -->
  <property name="ignoreRequestIds" value="/action/login,/action/logout" />
</component>