セッション管理
ユーザーが認証(Passkey、Email Code、ソーシャルログイン、またはOAuth)を完了すると、SDKがセッションを作成します。auth.session 名前空間は、そのセッションを照会、検証、更新、管理するためのメソッドを提供します。
現在のセッションの取得
Section titled “現在のセッションの取得”現在のセッションとユーザーデータを取得します:
const { data, error } = await auth.session.get();
if (error) { console.error('セッションエラー:', error.message); return;}
if (data === null) { console.log('未認証'); return;}
console.log('ユーザー:', data.user);console.log('セッション:', data.session);レスポンス型
Section titled “レスポンス型”interface AuthSessionData { session?: Session; user?: User;}
interface Session { id: string; userId: string; createdAt: string; expiresAt: string;}
interface User { id: string; // または sub email?: string; name?: string; nickname?: string; emailVerified?: boolean; // ...追加クレーム}認証状態の確認
Section titled “認証状態の確認”現在のトークンベースセッションを確認します:
const isLoggedIn = await auth.session.isAuthenticated();
if (isLoggedIn) { // 認証済みUIを表示} else { // ログインボタンを表示}まず保存済みトークンの有無を確認し、その後 session.get() でサーバー上のセッションを確認します。UIでユーザーデータも必要な場合は、最初から session.get() を呼んでください。
ユーザー情報の取得
Section titled “ユーザー情報の取得”現在のユーザーのプロフィールを取得します:
const user = await auth.session.getUser();
if (user) { console.log('メール:', user.email); console.log('名前:', user.name); console.log('認証済み:', user.emailVerified);} else { console.log('未認証');}セッションの検証
Section titled “セッションの検証”現在のセッションがサーバー上でまだ有効か確認します:
const isValid = await auth.session.validate();
if (!isValid) { // セッション期限切れまたは取り消し — ログインにリダイレクト window.location.href = '/login';}validate() はサーバーに問い合わせるため、セッションの有効性を確認する必要がある場合(例:機密操作の前)に使用します。通常の確認には isAuthenticated() で十分です。
セッションの更新
Section titled “セッションの更新”キャッシュを消して、サーバーから新しいセッション情報を取得します:
const session = await auth.session.refresh();
if (session) { console.log('新しいセッション情報を取得しました。有効期限:', session.expiresAt);} else { console.log('有効なセッションはありません');}auth.session.refresh() 自体はOAuth refresh_token grantを実行しません。ブラウザトークンのaccess token更新は、refresh tokenが利用可能で、auth.fetch() がリプレイ可能なリクエストで401を受けた場合に内部で使われます。
キャッシュのクリア
Section titled “キャッシュのクリア”SDKはセッションとユーザーデータをメモリ内にキャッシュします。新しいデータを強制的に取得するにはキャッシュをクリアします:
auth.session.clearCache();
// 次の get() や isAuthenticated() の呼び出しはサーバーに問い合わせますconst { data } = await auth.session.get();サインアウト
Section titled “サインアウト”ユーザーのセッションを終了します:
await auth.signOut();これはAuthrimサーバーのログアウトエンドポイントを呼び出し、ローカルセッション状態をクリアします。サインアウト完了後に auth:logout イベントが発行されます。
サインアウトオプション
Section titled “サインアウトオプション”interface SignOutOptions { /** ログアウト後のリダイレクト先(RPイニシエイテッドログアウト) */ redirectUri?: string; /** Authrim側にトークン失効を要求 */ revokeTokens?: boolean; /** 現在のアプリ、アプリケーショングループ、全セッションのlogout scope */ logoutScope?: 'local' | 'group' | 'global';}
// ログアウト後に特定のページにリダイレクトawait auth.signOut({ redirectUri: 'https://myapp.com/goodbye', revokeTokens: true,});広いlogout scopeには便利メソッドも使えます:
await auth.signOutApplicationGroup();await auth.signOutAll({ revokeTokens: true });ページ読み込みパターン
Section titled “ページ読み込みパターン”ページ初期化の一般的なパターン:
const auth = await createAuthrim({ issuer: 'https://auth.example.com', clientId: 'my-app',});
async function initPage() { const { data } = await auth.session.get();
if (!data) { // 未認証 — ログインUIを表示 showLoginButton(); return; }
// 認証済み — ユーザーコンテンツを表示 showUserDashboard(data.user, data.session);}
initPage();保護されたページパターン
Section titled “保護されたページパターン”未認証ユーザーをログインにリダイレクト:
async function requireAuth() { const isLoggedIn = await auth.session.isAuthenticated();
if (!isLoggedIn) { window.location.href = '/login'; return null; }
const { data } = await auth.session.get(); return data;}
// ページで使用const sessionData = await requireAuth();if (!sessionData) return; // リダイレクト中
// 認証済みロジックを実行showProfile(sessionData.user);