Class PermissionCheckHandler

java.lang.Object
nablarch.common.permission.PermissionCheckHandler
All Implemented Interfaces:
Handler<Object,Object>
Direct Known Subclasses:
PermissionCheckHandler

public class PermissionCheckHandler extends Object implements Handler<Object,Object>
認可判定を行うハンドラ。

このクラスを使用する場合は、下記プロパティを設定する。
permissionFactory
Permissionを生成するPermissionFactory。必須。
ignoreRequestIds
認可判定を行わないリクエストID。オプション。
複数指定する場合はカンマ区切り。
  • Constructor Details

    • PermissionCheckHandler

      public PermissionCheckHandler()
  • Method Details

    • handle

      public Object handle(Object inputData, ExecutionContext context) throws Forbidden
      リクエストIDを使用して認可判定を行う。

      下記の順に処理を行う。
      1. ThreadContextからリクエストIDを取得し、認可判定の対象リクエストかをチェックする。
        対象でない場合は、認可判定を行わずに次のハンドラに処理を委譲する。
      2. ThreadContext.getUserId()からユーザIDを取得する。
        ユーザIDが設定されていない場合は、認可判定を行わずに次のハンドラに処理を委譲する。
      3. ユーザに紐付く認可情報を取得し、認可判定を行う。
        認可判定に成功した場合は、ThreadContextPermissionを設定し、次のハンドラに処理を委譲する。
        認可判定に失敗した場合は、指定されたリソースパスとステータスコードを使用してForbiddenをスローする。
      Specified by:
      handle in interface Handler<Object,Object>
      Parameters:
      inputData - 処理対象データ
      context - 実行コンテキスト
      Returns:
      処理結果
      Throws:
      Forbidden - 認可判定に失敗した場合(nablarch.fw.Result$Forbidden)
    • setPermissionFactory

      public PermissionCheckHandler setPermissionFactory(PermissionFactory permissionFactory)
      Permissionを生成するPermissionFactoryを設定する。
      Parameters:
      permissionFactory - Permissionを生成するPermissionFactory
      Returns:
      自身のインスタンス
    • setIgnoreRequestIds

      public PermissionCheckHandler setIgnoreRequestIds(String... requestIds)
      認可判定を行わないリクエストIDを設定する。
      Parameters:
      requestIds - 認可判定を行わないリクエストID
      Returns:
      自身のインスタンス
    • setUsesInternalRequestId

      public PermissionCheckHandler setUsesInternalRequestId(boolean usesInternal)
      開閉局状態の判定を内部リクエストIDを用いて行うか否かを設定する。 明示的に設定しなかった場合のデフォルトは true (内部リクエストIDを使用する。)
      Parameters:
      usesInternal - 内部リクエストIDを使用して判定を行う場合は true 常に外部から送信されたリクエストIDを使って判定を行う場合は false
      Returns:
      このハンドラインスタンス自体