本文へ移動
rdlabo.dev

認証・HTTP

アクセス権限

provideKitAuth()userconfirmrequiredanonymousunavailable の認証状態に対応するfunctional Route Guardを設定します。Redirect routeとアプリ固有の副作用は利用側に残します。

KitAuthAccessService は現在のsessionが実行できる操作を公開します。

Mode Local Replica・Outbox 認証HTTP・Realtime・Sync
none 不可 不可
local 不可
remote

Authoritativeな required はsign-outであり、Offline Accessへ変換してはいけません。以前検証したLocal Sessionを有効化できるのはtransport結果が unavailable の場合だけです。

provideKitAuth(() => ({
  authState: () => inject(AuthService).state$,
  redirects: {
    whenAuthorized: '/home',
    whenConfirming: '/auth/confirm',
    whenNotConfirming: '/auth/signin',
    whenUnauthorized: '/auth',
  },
  isUnavailableError: (error) => isOfflineFallbackError(error),
}));

Route定義では kitRequiredUnauthorizedGuardkitRequireConfirmingGuardkitRequireAuthorizedGuard を使います。保護対象の非同期判定開始時には、現在のauthorization leaseが成功するまで以前のremote権限を一時停止します。

HTTPポリシー

provideKitHttp() はcredential付与、bypass規則、一時障害処理、アプリのerror hookを備えた kitAuthInterceptor を設定します。

自動retryは GETHEADOPTIONS または Idempotency-Key を持つrequestだけです。通常のwriteは自動retryしません。一時status 0408429502503504 を対象にし、Retry-After を尊重します。

Offline対応時は offlineInterceptorkitAuthInterceptor より前に登録します。Local modeではcredential生成とnetwork transportを止めながら、一致するread policyがスコープ付きReplicaを返せます。