メインコンテンツまでスキップ

概要

Zeltは認証(ユーザーは誰か?)と認可(ユーザーは何ができるか?)を分離した柔軟な認証システムを提供します。

認証 vs 認可

概念質問Zelt API
認証ユーザーは誰か?setUser(), currentUser()
認可ユーザーは何ができるか?@Authorized(), currentRoles()

認証が最初に行われ(通常はミドルウェアで)、その後保護されたルートで認可チェックが実行されます。

認証戦略の選択

Zeltは複数の認証戦略をサポートしています。アーキテクチャに合ったものを選択してください:

戦略適したユースケースパッケージ
JWTSPA、モバイルアプリ、API@zeltjs/auth-jwt
セッションサーバーレンダリングアプリ、従来のWebアプリ@zeltjs/auth-session
カスタムAPIキー、OAuth、その他組み込みプリミティブ

選択ガイド

クライアントはサーバーサイドレンダリングを使用するブラウザですか?
├── はい → セッション(Cookieベース、自動CSRF処理)
└── いいえ
├── SPAまたはモバイルアプリ? → JWT(ステートレス、スケーラブル)
└── マシン間API? → カスタム(APIキー、mTLS)

認証フロー

リクエスト

┌─────────────────────────────┐
│ 認証ミドルウェア │
│ • 認証情報を抽出 │
│ • 検証(JWT/セッション等) │
│ • setUser(user, roles) │
└─────────────────────────────┘

┌─────────────────────────────┐
│ @Authorized() チェック │
│ • ユーザーなし? → 401 │
│ • ロール不足? → 403 │
│ • OK → 続行 │
└─────────────────────────────┘

ルートハンドラー

レスポンス

クイックスタート

1. パッケージをインストール(または組み込みプリミティブを使用)

# JWT認証の場合
pnpm add @zeltjs/auth-jwt

# セッション認証の場合
pnpm add @zeltjs/auth-session @zeltjs/kv

2. ミドルウェアを登録

import { createApp } from '@zeltjs/core';
import { JwtMiddleware, JwtConfig } from '@zeltjs/auth-jwt';

const app = createApp({
http: {
controllers: [UserController],
middlewares: [JwtMiddleware],
},
configs: [JwtConfig],
});

3. ルートを保護

import { Controller, Get, Authorized, currentUser } from '@zeltjs/core';

@Controller('/dashboard')
class DashboardController {
@Authorized()
@Get('/')
index(user = currentUser()) {
return { message: `こんにちは、${user.name}さん` };
}
}

次のステップ