SCALE
SCALE Build Hub
機能集
認証 TypeScript Utility

クロスドメイン認証ブリッジ

出典: SCALE Base
実装時間
30〜60分
難度
簡単
価格
¥5,000

依存パッケージ

(標準APIのみ)

ファイル

lib/external-auth.ts

withAuthQuery(クロスドメイン認証ブリッジ)

:LiTarget: 用途

別オリジンのプロジェクトへリンクを貼る時、URL クエリ ?auth=<base64> でユーザー情報を引き継ぐ。受け取り側は AuthProvider が初回 useEffect でクエリを読んで sessionStorage に保存 → クエリは history.replaceState で削除。

:LiCode: コード

const SKIP_AUTH_DOMAINS = [/* 独自認証システム */];

export function withAuthQuery(externalUrl: string, user: UserLite | null): string {
  if (!user) return externalUrl;
  if (SKIP_AUTH_DOMAINS.some(d => externalUrl.includes(d))) return externalUrl;
  const payload = { id: user.id, name: user.name, email: user.email, /* PWは含めない */ };
  const json = JSON.stringify(payload);
  const utf8 = new TextEncoder().encode(json);
  let bin = '';
  utf8.forEach(b => { bin += String.fromCharCode(b); });
  const b64 = btoa(bin);
  const sep = externalUrl.includes('?') ? '&' : '?';
  return `${externalUrl}${sep}auth=${encodeURIComponent(b64)}`;
}

:LiAlertCircle: 注意