ミドルウェア
xidMiddleware() は Edge Runtime で動作し、セッション JWT をネットワーク不要で検証し、サーバーコンポーネントとルートハンドラー向けに認証状態を下流のリクエストヘッダーに注入します。
import { xidMiddleware } from '@xid-kit/nextjs'
export default xidMiddleware({
jwtKey: process.env.XID_JWKS_PUBLIC_KEY!,
issuer: 'https://xid.dev',
})
export const config = {
matcher: ['/dashboard(.*)', '/api/protected(.*)'],
}App Router サーバーヘルパー
import { auth, currentUser } from '@xid-kit/nextjs'
export default async function DashboardPage() {
const { userId } = await auth()
if (!userId) return null
const user = await currentUser()
return <p>Welcome {user?.email}</p>
}Pages Router
import { getAuth } from '@xid-kit/nextjs'
export const getServerSideProps = async (ctx) => {
const { userId } = await getAuth(ctx.req)
if (!userId) return { redirect: { destination: '/sign-in', permanent: false } }
return { props: {} }
}エクスポートされた API
| エクスポート | 種別 | 目的 |
|---|---|---|
xidMiddleware |
function | Edge Runtime middleware:JWT を検証し認証ヘッダーを注入します |
auth |
function | App Router:userId、orgId、orgRole を含む AuthObject を返します |
getAuth |
function | Pages Router:IncomingMessage から AuthObject を返します |
currentUser |
function | App Router:サーバー認証コンテキストを使って完全なユーザーオブジェクトを取得します |
xidClient |
function | 現在のリクエスト認証にバインドされたサーバー側 XidApiClient を返します |
XID_AUTH_HEADER |
文字列定数 | middleware とサーバーコンポーネント間の認証状態を表すヘッダー名 |
XidMiddlewareOptions |
type | xidMiddleware のオプション:jwtKey、issuer、publicRoutes、ignoredRoutes |
XidServerClientOptions |
type | xidClient のオプション |
AuthObject |
type | 認証済み状態:userId、orgId、orgRole、sessionId |
UnauthenticatedAuthObject |
type | フィールドが null の未認証状態 |
AuthResult |
type | AuthObject と UnauthenticatedAuthObject のユニオン |
PaginationParams |
type | Management API 一覧呼び出し用の cursor および limit パラメーター |
PaginatedResponse<T> |
type | ページネーション対応のレスポンスエンベロープ |
再エクスポート
export * from "@xid-kit/react"を通じて @xid-kit/react のすべてのクライアントコンポーネントとフックを再エクスポートします。- @xid-kit/backend からの再エクスポート:
verifyToken、verifyWebhook、authenticateRequest、JwksCache、toVerifyKeySet、AppError、BACKEND_ERROR_CODES、およびそれらに関連するすべての型。 - サーバーヘルパーは署名シークレットをクライアントバンドルに公開しません。