SmartMVC
ドキュメント一覧
ガイド
機能
認証・認可
サンプル
リファレンス
  • 简体中文
  • English
  • 日本語
  • Русский
GitHub
ドキュメント一覧
ガイド
機能
認証・認可
サンプル
リファレンス
  • 简体中文
  • English
  • 日本語
  • Русский
GitHub
  • リファレンス

    • 設定リファレンス
    • API リファレンス

API リファレンス

この章は、これまでに説明した主要 API を調べるための一覧です。初めて利用する場合は、先にクイックスタートと各機能の説明を読むと、ここにある型の役割を理解しやすくなります。

アノテーション

@Auth

Controller クラス、メソッド、または合成アノテーションに使用できます。

@Auth(
    roles = { "admin", "auditor" },
    permissions = { "report:read" },
    mode = AuthMode.ANY
)
メンバー型デフォルト説明
rolesString[]{}必要なロールです。
permissionsString[]{}必要な名前付き権限です。
modeAuthModeALL複数のロールと権限について、すべて一致またはいずれか一致を指定します。

@Anonymous

認証を必要としないクラスまたはメソッドを示します。メソッド側の宣言が優先され、匿名 API では現在のユーザー認証情報を作成しません。

AuthPrincipal<T>

現在の利用者を表す不変の認証情報です。

メソッド戻り値
getId()変化しないユーザー識別子
getUser()アプリケーション独自のユーザーオブジェクト。null を許可します。
getRoles()変更できないロール集合
getPermissions()変更できない権限集合
getAttributes()変更できない追加属性 Map
getAttribute(name)指定した名前の追加属性

コンストラクターは集合と Map を防御的にコピーします。id は null または空白にはできません。

CurrentAuth

Spring が管理するシングルトンのファサードです。内部ではリクエストスレッドのコンテキストを参照します。

currentAuth.isAuthenticated();
currentAuth.getUserId();
currentAuth.getUser(AppUser.class);
currentAuth.getRoles();
currentAuth.getPermissions();
currentAuth.hasRole("admin");
currentAuth.hasPermission("GET", "/api/users/42");

requirePrincipal() は、認証情報がない場合に IllegalStateException を送出します。通常は、@Auth で保護された処理の中で使います。

AuthInterceptor<T>

独自認証を組み込むには、次のメソッドを実装します。

AuthPrincipal<T> authenticate(String token, HttpServletRequest request);

必要に応じて resolveToken、authorize、bind、clear、resolveRequestPath をオーバーライドできます。アプリケーションが AuthInterceptor の Bean を登録すると、自動構成の PermitAllAuthInterceptor は登録を控えます。

ApiResponse<T>

フィールドは success、code、message、data、timestamp です。

ApiResponse.success(data);
ApiResponse.success("created", data);
ApiResponse.failure("ORDER_CLOSED", "Order is already closed");
ApiResponse.failure("INVALID_LINES", "Some lines are invalid", details);

PageResult<T>

new PageResult<>(items, total, page, pageSize);

items、total、page、pageSize を持ちます。getTotalPages() は、全件数をページサイズで割り、端数を切り上げて総ページ数を計算します。

例外一覧

すべての例外は SmartMvcException を継承し、スタックトレースを生成しません。

例外codeHTTP
BadRequestExceptionBAD_REQUEST400
ParameterValidationExceptionPARAMETER_VALIDATION_FAILED400
UnauthorizedExceptionUNAUTHORIZED401
ForbiddenExceptionFORBIDDEN403
ResourceNotFoundExceptionRESOURCE_NOT_FOUND404
MethodNotAllowedExceptionMETHOD_NOT_ALLOWED405
NotAcceptableExceptionNOT_ACCEPTABLE406
RequestTimeoutExceptionREQUEST_TIMEOUT408
ConflictExceptionCONFLICT409
GoneExceptionGONE410
PayloadTooLargeExceptionPAYLOAD_TOO_LARGE413
UnsupportedMediaTypeExceptionUNSUPPORTED_MEDIA_TYPE415
BusinessExceptionBUSINESS_ERROR / 独自指定422
UnprocessableEntityExceptionUNPROCESSABLE_ENTITY422
LockedExceptionLOCKED423
TooManyRequestsExceptionTOO_MANY_REQUESTS429
BusinessExecutionExceptionBUSINESS_EXECUTION_FAILED500
InternalServerExceptionINTERNAL_SERVER_ERROR500
NotImplementedExceptionNOT_IMPLEMENTED501
BadGatewayExceptionBAD_GATEWAY502
ServiceUnavailableExceptionSERVICE_UNAVAILABLE503
GatewayTimeoutExceptionGATEWAY_TIMEOUT504

new BusinessException(message) は、デフォルトの code BUSINESS_ERROR を使います。業務固有の code、メッセージ、details を渡すこともでき、クライアントが内容を理解して適切な操作へつなげられる業務上の拒否を表すのに適しています。

GitHub でこのページを編集
最終更新: 2026/08/07 8:33
前へ
設定リファレンス