6.1.9. 認可チェックハンドラ¶
本ハンドラでは、 リクエストに対する認可チェック を行う。
認可チェックは、ライブラリの 認可チェック を使用して行う。 そのため、本ハンドラを使用するには、 PermissionFactory を実装したクラスを本ハンドラに設定する必要がある。
本ハンドラでは、以下の処理を行う。
- 認可チェック
処理の流れは以下のとおり。
![../../../../_images/flow4.png](../../../../_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>