Session Table
概要
管理用のテーブル session 情報 (ユーザー・管理者のログイン/ログアウト追跡)
テーブル定義
| 論理名 | 物理名 | カラム名 | データ型 | 主キー | リレーション | ユニーク | NULL許可 | デフォルト値 | 備考 |
|---|---|---|---|---|---|---|---|---|---|
| Session Information | session | id | string | ◯ | セッション識別子 (UUID, JWT jti, またはトークンハッシュ) | ||||
| jti | string | ◯ | JWT ID (jti クレーム) | ||||||
| token_hash | string | ◯ | JWTトークンのSHA-256ハッシュ (64文字) | ||||||
| user_type | string | user または admin | |||||||
| cognito_sub | string | joinなしでクエリ可能なCognito sub | |||||||
| user_id | number | user:id | ◯ | ユーザーテーブルへの外部キー (管理者セッションの場合はnull) | |||||
| admin_id | number | admin:id | ◯ | 管理者テーブルへの外部キー (ユーザーセッションの場合はnull) | |||||
| login_at | datetime | セッション作成日時 | |||||||
| logout_at | datetime | ◯ | セッション終了日時 | ||||||
| ip_address | string | ◯ | ログイン時のクライアントIPアドレス | ||||||
| user_agent | string | ◯ | ブラウザ/クライアントのユーザーエージェント | ||||||
| expires_at | datetime | ◯ | セッション有効期限 | ||||||
| revoked_at | datetime | ◯ | トークン失効日時 | ||||||
| created_at | datetime | ||||||||
| updated_at | datetime | ||||||||
| deleted_at | datetime | ◯ | |||||||
| created_by | string | ||||||||
| updated_by | string | ||||||||
| deleted_by | string |
リレーション
- user_id → user.id
- admin_id → admin.id
インデックス
- 主キー (id)
- UNIQUE (token_hash)
- INDEX (user_id)
- INDEX (admin_id)
- INDEX (cognito_sub, user_type)
- INDEX (user_type, logout_at)
- INDEX (expires_at)
- INDEX (jti)
注記
- ユーザーと管理者のセッションを追跡
- user_typeで'user'と'admin'セッションを区別
- user_idまたはadmin_idの少なくとも1つは設定する必要がある
- token_hashにより実際のトークンを保存せずに高速な検証が可能
- セッションの有効期限と失効をサポート
- 論理削除サポート (deleted_atカラム)