コンテンツにスキップ
NextAuth.js v4 からの移行ですか?以下をお読みください 移行ガイド.
API リファレンス@auth/solid-start

@auth/solid-start

⚠️

@auth/solid-start は現在実験的です。API は将来変更される予定です。

SolidStart Auth は、Auth.js の公式 SolidStart 統合です。数行のコードで SolidStart アプリに認証を追加する簡単な方法を提供します。

インストール

npm install @auth/core @auth/solid-start

AuthError

すべての Auth.js エラーの基本エラー クラスです。logger.error オプションを介して、サーバー ログに適切にフォーマットされた方法で出力されるように最適化されています。

拡張

コンストラクター

new AuthError(message, errorOptions)

new AuthError(message?, errorOptions?): AuthError
パラメーター
パラメーター
message?string | ErrorOptions
errorOptions?ErrorOptions
戻り値

AuthError

オーバーライド

Error.constructor

プロパティ

cause?

optional cause: Record<string, unknown> & {
  err: Error;
};
型宣言
err?
optional err: Error;

message

message: string;
継承元

Error.message

name

name: string;
継承元

Error.name

stack?

optional stack: string;
継承元

Error.stack

type

type: ErrorType;

エラー タイプ。ログでエラーを識別するために使用されます。

prepareStackTrace()?

static optional prepareStackTrace: (err, stackTraces) => any;

スタック トレースをフォーマットするためのオプションのオーバーライド

参照

https://v8.dokyumento.jp/docs/stack-trace-api#customizing-stack-traces

パラメーター
パラメーター
errError
stackTracesCallSite[]
戻り値

任意

継承元

Error.prepareStackTrace

stackTraceLimit

static stackTraceLimit: number;
継承元

Error.stackTraceLimit

メソッド

captureStackTrace()

static captureStackTrace(targetObject, constructorOpt?): void

ターゲットオブジェクトに .stack プロパティを作成します。

パラメータ
パラメーター
targetObjectオブジェクト
constructorOpt?関数
戻り値

void

継承元

Error.captureStackTrace


CredentialsSignin

Credentialsプロバイダーの authorize コールバックからスローされる可能性があります。authorize コールバック中にエラーが発生した場合、2つのことが起こりえます。

  1. ユーザーは、URLに error=CredentialsSignin&code=credentials を含めて、サインインページにリダイレクトされます。code は構成可能です。
  2. フォームアクションをサーバー側で処理するフレームワークでこのエラーをスローした場合、ユーザーをリダイレクトする代わりにこのエラーがスローされるため、処理する必要があります。

拡張

コンストラクタ

new CredentialsSignin(message, errorOptions)

new CredentialsSignin(message?, errorOptions?): CredentialsSignin
パラメータ
パラメーター
message?string | ErrorOptions
errorOptions?ErrorOptions
戻り値

CredentialsSignin

継承元

SignInError.constructor

プロパティ

cause?

optional cause: Record<string, unknown> & {
  err: Error;
};
型宣言
err?
optional err: Error;
継承元

SignInError.cause

code

code: string;

code クエリパラメータに設定されるエラーコードです。

⚠ 注意: このプロパティはURLに含まれるため、機密性の高いエラーを示唆しないようにしてください。

デバッグが必要な場合は、常にサーバーに完全なエラーが記録されます。

一般的に、ユーザーが間違ったユーザー名またはパスワードを具体的に入力したかどうかを具体的に示唆することは推奨しません。代わりに「無効な資格情報」のようなものを試してください。

message

message: string;
継承元

SignInError.message

name

name: string;
継承元

SignInError.name

stack?

optional stack: string;
継承元

SignInError.stack

type

type: ErrorType;

エラー タイプ。ログでエラーを識別するために使用されます。

継承元

SignInError.type

kind

static kind: string;
継承元

SignInError.kind

prepareStackTrace()?

static optional prepareStackTrace: (err, stackTraces) => any;

スタック トレースをフォーマットするためのオプションのオーバーライド

参照

https://v8.dokyumento.jp/docs/stack-trace-api#customizing-stack-traces

パラメータ
パラメーター
errError
stackTracesCallSite[]
戻り値

任意

継承元

SignInError.prepareStackTrace

stackTraceLimit

static stackTraceLimit: number;
継承元

SignInError.stackTraceLimit

type

static type: string;

メソッド

captureStackTrace()

static captureStackTrace(targetObject, constructorOpt?): void

ターゲットオブジェクトに .stack プロパティを作成します。

パラメータ
パラメーター
targetObjectオブジェクト
constructorOpt?関数
戻り値

void

継承元

SignInError.captureStackTrace


アカウント

通常、使用されているプロバイダーに関する情報を含み、OAuthプロバイダーによって返されるさまざまなトークンである TokenSet も拡張します。

拡張

プロパティ

access_token?

optional readonly access_token: string;
継承元

Partial.access_token

authorization_details?

optional readonly authorization_details: AuthorizationDetails[];
継承元

Partial.authorization_details

expires_at?

optional expires_at: number;

TokenEndpointResponse.expires_in に基づいて計算された値。

TokenEndpointResponse.access_token が期限切れになる絶対タイムスタンプ(秒単位)。

この値は、TokenEndpointResponse.refresh_token とともにトークンローテーションを実装するために使用できます。

参照

expires_in?

optional readonly expires_in: number;
継承元

Partial.expires_in

id_token?

optional readonly id_token: string;
継承元

Partial.id_token

provider

provider: string;

このアカウントのプロバイダーID。例:「google」。完全なリストはhttps://authjs.dokyumento.jp/reference/core/providers を参照してください。

providerAccountId

providerAccountId: string;

この値は、アカウントを作成するために使用されるプロバイダーのタイプによって異なります。

  • oauth/oidc: profile() コールバックから返される OAuth アカウントの ID。
  • email: ユーザーのメールアドレス。
  • credentials: authorize() コールバックから返される id

refresh_token?

optional readonly refresh_token: string;
継承元

Partial.refresh_token

scope?

optional readonly scope: string;
継承元

Partial.scope

token_type?

optional readonly token_type: Lowercase<string>;

注意: 値は大文字と小文字を区別しないため、常に小文字で返されます。

継承元

Partial.token_type

type

type: ProviderType;

このアカウントのプロバイダーのタイプ

userId?

optional userId: string;

このアカウントが属するユーザーのID

参照

https://authjs.dokyumento.jp/reference/core/adapters#adapteruser


DefaultSession

拡張元

プロパティ

expires

expires: string;

user?

optional user: User;

Profile

OAuthプロバイダーから返されるユーザー情報。

参照

https://openid.net/specs/openid-connect-core-1_0.html#StandardClaims

インデックス可能

[claim: string]: unknown

プロパティ

address?

optional address: null | {
  country: null | string;
  formatted: null | string;
  locality: null | string;
  postal_code: null | string;
  region: null | string;
  street_address: null | string;
};

birthdate?

optional birthdate: null | string;

email?

optional email: null | string;

email_verified?

optional email_verified: null | boolean;

family_name?

optional family_name: null | string;

gender?

optional gender: null | string;

given_name?

optional given_name: null | string;

id?

optional id: null | string;

locale?

optional locale: null | string;

middle_name?

optional middle_name: null | string;

name?

optional name: null | string;

nickname?

optional nickname: null | string;

phone_number?

optional phone_number: null | string;

picture?

optional picture: any;

preferred_username?

optional preferred_username: null | string;

profile?

optional profile: null | string;

sub?

optional sub: null | string;

updated_at?

optional updated_at: null | string | number | Date;

website?

optional website: null | string;

zoneinfo?

optional zoneinfo: null | string;

Session

ログイン中のユーザーのアクティブなセッション。

拡張元

プロパティ

expires

expires: string;
継承元

DefaultSession.expires

user?

optional user: User;
継承元

DefaultSession.user


SolidAuthConfig

Authメソッドを設定します。

import Auth, { type AuthConfig } from "@auth/core"
 
export const authConfig: AuthConfig = {...}
 
const request = new Request("https://example.com")
const response = await AuthHandler(request, authConfig)

参照

初期化

拡張元

プロパティ

adapter?

optional adapter: Adapter;

データベースアダプターを渡すためにadapterオプションを使用できます。

継承元

AuthConfig.adapter

basePath?

optional basePath: string;

Auth.js APIエンドポイントのベースパス。

デフォルト
"/api/auth" in "next-auth"; "/auth" with all other frameworks
継承元

AuthConfig.basePath

callbacks?

optional callbacks: {
  jwt: (params) => Awaitable<null | JWT>;
  redirect: (params) => Awaitable<string>;
  session: (params) => Awaitable<Session | DefaultSession>;
  signIn: (params) => Awaitable<string | boolean>;
};

コールバックは、アクションが実行されたときに何が起こるかを制御するために使用できる非同期関数です。コールバックは特にJSON Webトークンを伴うシナリオでは、データベースなしでアクセス制御を実装したり、外部データベースやAPIと統合したりできるため、非常に強力です。

jwt()?
optional jwt: (params) => Awaitable<null | JWT>;

このコールバックは、JSON Webトークンが作成された(つまりサインイン時)または更新された(つまりクライアントでセッションがアクセスされたとき)ときに呼び出されます。ここで返すすべてのものはJWTに保存され、セッションコールバックに転送されます。そこで、クライアントに返すものを制御できます。それ以外はフロントエンドから保持されます。JWTは、AUTH_SECRET環境変数を介してデフォルトで暗号化されます。

session コールバック

パラメーター
パラメーター説明
paramsオブジェクト-
params.account?null | Accountサインインに使用されたプロバイダーに関する情報が含まれています。
TokenSetも含まれています

ノート
trigger"signIn"または"signUp"の場合に利用可能
params.isNewUser?boolean非推奨
代わりにtrigger === "signUp"を使用
params.profile?プロファイルプロバイダーから返されたOAuthプロファイル。
(OIDCの場合、デコードされたIDトークンまたは/userinfoレスポンスになります)

ノート
trigger"signIn"の場合に利用可能。
params.session?任意AuthConfig.session strategy: "jwt"を使用している場合、これはデータ
useSession().updateメソッドを介してクライアントから送信されます。

⚠ 注意、このデータを使用する前に検証する必要があります。
params.tokenJWTtrigger"signIn"または"signUp"の場合、JWTのサブセットになります。
nameemail、およびimageが含まれます。

それ以外の場合は、後続の呼び出しのための完全なJWTになります。
params.trigger?"update" | "signIn" | "signUp"jwtコールバックが呼び出された理由を確認します。考えられる理由は次のとおりです
- ユーザーサインイン:コールバックが初めて呼び出される場合、userprofile、およびaccountが存在します。
- ユーザーサインアップ:データベースでユーザーが初めて作成された場合(AuthConfig.session.strategyが"database"に設定されている場合)
- 更新イベント:useSession().updateメソッドによってトリガーされます。
後者の場合、triggerundefinedになります。
params.userUser | AdapterUserOAuthConfig.profileまたはCredentialsConfig.authorizeコールバックの結果のいずれか。

ノート
trigger"signIn"または"signUp"の場合に利用可能。

リソース
- 認証情報プロバイダー
- ユーザーデータベースモデル
戻り値

Awaitable<null | JWT>

redirect()?
optional redirect: (params) => Awaitable<string>;

このコールバックは、ユーザーがコールバックURLにリダイレクトされるたび(サインインまたはサインアウト時など)に呼び出されます。デフォルトでは、オリジンと同じホスト上のURLのみが許可されます。このコールバックを使用して、その動作をカスタマイズできます。

ドキュメント

callbacks: {
  async redirect({ url, baseUrl }) {
    // Allows relative callback URLs
    if (url.startsWith("/")) return `${baseUrl}${url}`
 
    // Allows callback URLs on the same origin
    if (new URL(url).origin === baseUrl) return url
 
    return baseUrl
  }
}
パラメータ
パラメーター説明
paramsオブジェクト-
params.baseUrl文字列サイトのデフォルトのベースURL(フォールバックとして使用できます)
params.url文字列クライアントによってコールバックURLとして提供されるURL
戻り値

Awaitable<string>

session()?
optional session: (params) => Awaitable<Session | DefaultSession>;

このコールバックは、セッションがチェックされるたびに呼び出されます。(例:/api/session エンドポイントの呼び出し時、useSession または getSession の使用時)。戻り値はクライアントに公開されるため、ここで何を返すかには注意してください! JWTコールバックを通じてトークンに追加したものをクライアントで利用できるようにする場合は、ここでも明示的に返す必要があります。

⚠ デフォルトでは、セキュリティを強化するために、トークンのサブセット(メール、名前、画像)のみが返されます。

token引数はjwtセッションストラテジーを使用している場合にのみ使用可能で、user引数はデータベースセッションストラテジーを使用している場合にのみ使用可能です。

jwt コールバック

callbacks: {
  async session({ session, token, user }) {
    // Send properties to the client, like an access_token from a provider.
    session.accessToken = token.accessToken
 
    return session
  }
}
パラメータ
パラメーター
params{ session: { user: AdapterUser; } & AdapterSession; user: AdapterUser; } & { session: Session; token: JWT; } & { newSession: any; trigger: "update"; }
戻り値

Awaitable<Session | DefaultSession>

signIn()?
optional signIn: (params) => Awaitable<string | boolean>;

ユーザーがサインインを許可されるかどうかを制御します。true を返すとサインインフローが続行されます。false を返すかエラーをスローするとサインインフローが停止し、ユーザーはエラーページにリダイレクトされます。文字列を返すと、ユーザーは指定されたURLにリダイレクトされます。

処理されないエラーは、元のエラーに設定されたメッセージとともに AccessDenied をスローします。

AccessDenied

callbacks: {
 async signIn({ profile }) {
  // Only allow sign in for users with email addresses ending with "yourdomain.com"
  return profile?.email?.endsWith("@yourdomain.com")
}
パラメータ
パラメーター説明
paramsオブジェクト-
params.account?null | Account-
params.credentials?Record<string, CredentialInput>Credentialsプロバイダーが使用されている場合、ユーザーの認証情報が含まれます
params.email?オブジェクトEmailプロバイダーが使用されている場合、最初の呼び出しで、
verificationRequest: true プロパティが含まれ、検証リクエストフローでトリガーされていることを示します。
ユーザーがサインインリンクをクリックした後にコールバックが呼び出された場合、
このプロパティは存在しません。verificationRequest プロパティを確認して、
ブロックリスト上のアドレスまたはドメインへのメール送信を回避するか、許可リスト内のメールアドレスに対してのみ明示的に生成できます。
許可リストにあるメールアドレスの場合。
params.email.verificationRequest?boolean-
params.profile?プロファイルOAuthプロバイダーが使用されている場合、プロバイダーから返された完全な
OAuthプロファイルが含まれます。
params.userUser | AdapterUser-
戻り値

Awaitable<string | boolean>

継承元

AuthConfig.callbacks

cookies?

optional cookies: Partial<CookiesOptions>;

Auth.jsで使用されるCookieの名前とオプションのデフォルトをオーバーライドできます。カスタムプロパティを使用して1つ以上のCookieを指定でき、欠落しているオプションはAuth.jsで定義されたデフォルト値を使用します。この機能を使用する場合は、開発ビルドと実運用ビルドで異なるCookieポリシーを設定するための条件付き動作を作成することになるでしょう。これにより、組み込みの動的ポリシーからオプトアウトすることになります。

  • これは高度なオプションです。 高度なオプションは、基本オプションと同じように渡されますが、複雑な影響や副作用がある場合があります。非常に慣れている場合を除き、高度なオプションの使用は避けるようにしてください。
デフォルト
{}
継承元

AuthConfig.cookies

debug?

optional debug: boolean;

認証およびデータベース操作のデバッグメッセージを有効にするには、debugをtrueに設定します。

  • ⚠ カスタムの AuthConfig.logger を追加した場合、この設定は無視されます。
デフォルト
false
継承元

AuthConfig.debug

events?

optional events: {
  createUser: (message) => Awaitable<void>;
  linkAccount: (message) => Awaitable<void>;
  session: (message) => Awaitable<void>;
  signIn: (message) => Awaitable<void>;
  signOut: (message) => Awaitable<void>;
  updateUser: (message) => Awaitable<void>;
};

イベントは、応答を返さない非同期関数であり、監査ログに役立ちます。以下のイベントのいずれかにハンドラーを指定できます。例:デバッグまたは監査ログの作成。メッセージオブジェクトの内容は、フロー(OAuthまたはEmail認証フロー、JWTまたはデータベースセッションなど)によって異なりますが、通常はユーザーオブジェクトやJSON Web Tokenの内容、およびイベントに関連するその他の情報が含まれます。

デフォルト
{}
createUser()?
optional createUser: (message) => Awaitable<void>;
パラメータ
パラメーター
messageオブジェクト
message.userユーザー
戻り値

Awaitable<void>

linkAccount()?
optional linkAccount: (message) => Awaitable<void>;
パラメータ
パラメーター
messageオブジェクト
message.accountアカウント
message.profileUser | AdapterUser
message.userUser | AdapterUser
戻り値

Awaitable<void>

session()?
optional session: (message) => Awaitable<void>;

メッセージオブジェクトには、JWTまたはデータベース永続セッションのどちらを使用しているかに応じて、以下のいずれかが含まれます

  • token: このセッションのJWT。
  • session: アダプターからのセッションオブジェクト。
パラメータ
パラメーター
messageオブジェクト
message.sessionセッション
message.tokenJWT
戻り値

Awaitable<void>

signIn()?
optional signIn: (message) => Awaitable<void>;

credentials タイプの認証を使用している場合、ユーザーは資格情報プロバイダーからの生の応答です。他のプロバイダーの場合、アダプターからのユーザーオブジェクト、アカウント、およびユーザーがアダプターにとって新しいかどうかを示すインジケーターを取得します。

パラメータ
パラメーター
messageオブジェクト
message.account?null | Account
message.isNewUser?boolean
message.profile?プロファイル
message.userユーザー
戻り値

Awaitable<void>

signOut()?
optional signOut: (message) => Awaitable<void>;

メッセージオブジェクトには、JWTまたはデータベース永続セッションのどちらを使用しているかに応じて、以下のいずれかが含まれます

  • token: このセッションのJWT。
  • session: 終了するアダプターからのセッションオブジェクト。
パラメータ
パラメーター
message{ session: undefined | null | void | AdapterSession; } | { token: null | JWT; }
戻り値

Awaitable<void>

updateUser()?
optional updateUser: (message) => Awaitable<void>;
パラメータ
パラメーター
messageオブジェクト
message.userユーザー
戻り値

Awaitable<void>

継承元

AuthConfig.events

experimental?

optional experimental: {
  enableWebAuthn: boolean;
};

このオプションを使用して、実験的な機能を有効にします。有効にすると、コンソールに警告メッセージが表示されます。

実験的な機能は安定性が保証されておらず、予告なしに変更または削除される可能性があります。注意して使用してください。

デフォルト
{}
enableWebAuthn?
optional enableWebAuthn: boolean;

WebAuthnサポートを有効にします。

デフォルト
false
継承元

AuthConfig.experimental

jwt?

optional jwt: Partial<JWTOptions>;

AuthConfig.adapter が指定されていない場合、JSON Web Token はデフォルトで有効になります。JSON Web Token はデフォルトで暗号化 (JWE) されます。この動作を維持することを推奨します。

継承元

AuthConfig.jwt

logger?

optional logger: Partial<LoggerInstance>;

ロガーレベルを上書きする(undefined レベルは組み込みのロガーを使用します)。また、NextAuth のログをインターセプトします。このオプションを使用すると、NextAuth のログをサードパーティのロギングサービスに送信できます。

// /auth.ts
import log from "logging-service"
 
export const { handlers, auth, signIn, signOut } = NextAuth({
  logger: {
    error(code, ...message) {
      log.error(code, message)
    },
    warn(code, ...message) {
      log.warn(code, message)
    },
    debug(code, ...message) {
      log.debug(code, message)
    }
  }
})
  • ⚠ 設定した場合、AuthConfig.debug オプションは無視されます。
デフォルト
console
継承元

AuthConfig.logger

pages?

optional pages: Partial<PagesOptions>;

カスタムのサインイン、サインアウト、エラーページを作成したい場合は、使用する URL を指定します。指定されたページは、対応する組み込みページを上書きします。

デフォルト
{}
  pages: {
    signIn: '/auth/signin',
    signOut: '/auth/signout',
    error: '/auth/error',
    verifyRequest: '/auth/verify-request',
    newUser: '/auth/new-user'
  }
継承元

AuthConfig.pages

prefix?

optional prefix: string;

認証ルートのベースパスを定義します。

デフォルト
'/api/auth'

providers

providers: Provider[];

サインインのための認証プロバイダーのリスト(例:Google、Facebook、Twitter、GitHub、Emailなど)。順序は任意です。これは、組み込みのプロバイダーの1つ、またはカスタムプロバイダーを持つオブジェクトのいずれかになります。

デフォルト
[]
継承元

AuthConfig.providers

raw?

optional raw: typeof raw;
継承元

AuthConfig.raw

redirectProxyUrl?

optional redirectProxyUrl: string;

設定すると、OAuthサインインフロー中に、認証リクエストのredirect_uriはこの値に基づいて設定されます。

これは、OAuthプロバイダーが単一のredirect_uriのみをサポートする場合、または、最終的なデプロイURLを事前に知らない(Vercelのような)プレビューURLでOAuthを使用したい場合に役立ちます。

URLには、Auth.jsが初期化される場所までのフルパスを含める必要があります。

注記

これにより、プロバイダーのstate OAuth2Config.checks が自動的に有効になります。

"https://authjs.example.com/api/auth"

また、プロバイダーごとに個別に上書きすることもできます。

GitHub({
  ...
  redirectProxyUrl: "https://github.example.com/api/auth"
})
デフォルト

AUTH_REDIRECT_PROXY_URL 環境変数

参考: ガイド: プレビューデプロイのセキュリティ保護

継承元

AuthConfig.redirectProxyUrl

secret?

optional secret: string | string[];

トークンのハッシュ化、クッキーの署名、暗号鍵の生成に使用されるランダムな文字列。

ランダムな文字列を生成するには、Auth.js CLIを使用できます:npx auth secret

注記

また、複数のシークレットの配列を渡すこともできます。その場合、JWTの復号化に成功した最初のシークレットが使用されます。これは、既存のセッションを無効にすることなく、シークレットをローテーションする場合に便利です。新しいシークレットは配列の先頭に追加する必要があり、これはすべての新しいセッションに使用されます。

継承元

AuthConfig.secret

session?

optional session: {
  generateSessionToken: () => string;
  maxAge: number;
  strategy: "jwt" | "database";
  updateAge: number;
};

JWTを使用するか、データベースを使用するか、アイドル状態のセッションが期限切れになるまでの時間、またはデータベースを使用している場合の書き込み操作を調整するなど、セッションを設定します。

generateSessionToken()?
optional generateSessionToken: () => string;

データベースベースのセッション用にカスタムセッショントークンを生成します。デフォルトでは、Node.jsのバージョンに応じてランダムなUUIDまたは文字列が生成されます。ただし、使用する独自のカスタム文字列(CUIDなど)を指定できます。

デフォルト

Node.jsのバージョンに応じて、randomUUID または randomBytes.toHex

戻り値

文字列

maxAge?
optional maxAge: number;

セッションの有効期限が切れるまでの、現在からの相対時間(秒単位)

デフォルト
2592000 // 30 days
strategy?
optional strategy: "jwt" | "database";

ユーザーセッションを保存する方法を選択します。デフォルトは、セッションクッキー内の暗号化されたJWT(JWE)である"jwt"です。

ただし、adapterを使用する場合は、デフォルトで"database"になります。明示的に"jwt"を定義することで、JWTセッションを強制的に使用できます。

"database"を使用する場合、セッションクッキーにはsessionTokenの値のみが含まれ、これはデータベース内のセッションを検索するために使用されます。

ドキュメント | アダプター | JSON Web Tokenについて

updateAge?
optional updateAge: number;

セッションを更新する頻度(秒単位)。0に設定すると、セッションは毎回更新されます。

デフォルト
86400 // 1 day
継承元

AuthConfig.session

skipCSRFCheck?

optional skipCSRFCheck: typeof skipCSRFCheck;
継承元

AuthConfig.skipCSRFCheck

theme?

optional theme: Theme;

組み込みのAuthConfig.pagesのテーマを変更します。

継承元

AuthConfig.theme

trustHost?

optional trustHost: boolean;

Auth.jsは、正常に機能するために、受信リクエストのhostヘッダーに依存しています。このため、このプロパティをtrueに設定する必要があります。

デプロイプラットフォームがhostヘッダーを安全に設定していることを確認してください。

公式のAuth.jsベースのライブラリは、hostヘッダーを安全に設定することがわかっている一部のデプロイプラットフォーム(例:Vercel)に対して、この値を自動的に設定しようとします。

継承元

AuthConfig.trustHost

useSecureCookies?

optional useSecureCookies: boolean;

trueに設定すると、NextAuth.jsによって設定されたすべてのクッキーは、HTTPS URLからのみアクセスできるようになります。このオプションは、開発者の利便性のために、http://で始まるURL(例:https://:3000)ではデフォルトでfalseになります。このセキュリティ機能を無効にして、非セキュアなURLからクッキーにアクセスできるようにするには、このオプションを手動でfalseに設定できます(推奨されません)。

  • これは高度なオプションです。 高度なオプションは、基本オプションと同じように渡されますが、複雑な影響や副作用がある場合があります。非常に慣れている場合を除き、高度なオプションの使用は避けるようにしてください。

デフォルトは、HTTPではfalse、HTTPSサイトではtrueです。

継承元

AuthConfig.useSecureCookies


ユーザー

OAuthプロバイダーのprofileコールバックで返されるオブジェクトの形状。これは、データベースを使用する場合、jwtおよびsessionコールバック、またはsessionコールバックの2番目のパラメータで利用できます。

拡張元:

プロパティ

email?

optional email: null | string;

id?

optional id: string;

image?

optional image: null | string;

name?

optional name: null | string;

GetSessionResult

type GetSessionResult: Promise<Session | null>;

customFetch

const customFetch: unique symbol;
🚫

このオプションを使用すると、プロバイダーがプロバイダーのOAuthエンドポイントに直接リクエストを行う際に使用するデフォルトのfetch関数をオーバーライドできます。誤った使用は、セキュリティ上の影響を及ぼす可能性があります。

企業プロキシ、カスタムフェッチライブラリ、キャッシュ検出エンドポイントのサポート、テスト用のモックの追加、ロギング、非仕様準拠プロバイダーのカスタムヘッダー/パラメーターの設定などに使用できます。

import { Auth, customFetch } from "@auth/core"
import GitHub from "@auth/core/providers/github"
 
const dispatcher = new ProxyAgent("my.proxy.server")
function proxy(...args: Parameters<typeof fetch>): ReturnType<typeof fetch> {
  return undici(args[0], { ...(args[1] ?? {}), dispatcher })
}
 
const response = await Auth(request, {
  providers: [GitHub({ [customFetch]: proxy })]
})

参照


SolidAuth()

SolidAuth(config): {
  GET: Promise<undefined | Response>;
  POST: Promise<undefined | Response>;
}

セットアップ

認証シークレットを生成し、環境変数として設定します

AUTH_SECRET=your_auth_secret

APIハンドラーの作成

この例ではgithubを使用します。次の環境変数を設定してください

GITHUB_ID=your_github_oauth_id
GITHUB_SECRET=your_github_oauth_secret
// routes/api/auth/[...solidauth].ts
import { SolidAuth, type SolidAuthConfig } from "@auth/solid-start"
import GitHub from "@auth/core/providers/github"
 
export const authOpts: SolidAuthConfig = {
  providers: [
    GitHub({
      clientId: process.env.GITHUB_ID,
      clientSecret: process.env.GITHUB_SECRET,
    }),
  ],
  debug: false,
}
 
export const { GET, POST } = SolidAuth(authOpts)

現在のセッションの取得

import { getSession } from "@auth/solid-start"
import { createServerData$ } from "solid-start/server"
import { authOpts } from "~/routes/api/auth/[...solidauth]"
 
export const useSession = () => {
  return createServerData$(
    async (_, { request }) => {
      return await getSession(request, authOpts)
    },
    { key: () => ["auth_user"] }
  )
}
 
// useSession returns a resource:
const session = useSession()
const loading = session.loading
const user = () => session()?.user

保護されたルート

SSRを使用する場合

SSRを使用する場合、Showコンポーネントを使用してサスペンスをトリガーするProtectedコンポーネントを作成することをお勧めします。それはこのようになるはずです

// components/Protected.tsx
import { type Session } from "@auth/core/types";
import { getSession } from "@auth/solid-start";
import { Component, Show } from "solid-js";
import { useRouteData } from "solid-start";
import { createServerData$, redirect } from "solid-start/server";
import { authOpts } from "~/routes/api/auth/[...solidauth]";
 
const Protected = (Comp: IProtectedComponent) => {
  const routeData = () => {
    return createServerData$(
      async (_, event) => {
        const session = await getSession(event.request, authOpts);
        if (!session || !session.user) {
          throw redirect("/");
        }
        return session;
      },
      { key: () => ["auth_user"] }
    );
  };
 
  return {
    routeData,
    Page: () => {
      const session = useRouteData<typeof routeData>();
      return (
        <Show when={session()} keyed>
          {(sess) => <Comp {...sess} />}
        </Show>
      );
    },
  };
};
 
type IProtectedComponent = Component<Session>;
 
export default Protected;

このように使用できます

// routes/protected.tsx
import Protected from "~/components/Protected";
 
export const { routeData, Page } = Protected((session) => {
  return (
    <main class="flex flex-col gap-2 items-center">
      <h1>This is a protected route</h1>
    </main>
  );
});
 
export default Page;

CSRを使用する場合

CSRを使用する場合、Protectedコンポーネントは期待どおりに機能せず、画面がちらつく原因になります。これを修正するには、Solid-Startミドルウェアを使用します

// entry-server.tsx
import { Session } from "@auth/core";
import { getSession } from "@auth/solid-start";
import { redirect } from "solid-start";
import {
  StartServer,
  createHandler,
  renderAsync,
} from "solid-start/entry-server";
import { authOpts } from "./routes/api/auth/[...solidauth]";
 
const protectedPaths = ["/protected"]; // add any route you wish in here
 
export default createHandler(
  ({ forward }) => {
    return async (event) => {
      if (protectedPaths.includes(new URL(event.request.url).pathname)) {
        const session = await getSession(event.request, authOpts);
        if (!session) {
          return redirect("/");
        }
      }
      return forward(event);
    };
  },
  renderAsync((event) => <StartServer event={event} />)
);

これで、保護されたルートを作成できます

// routes/protected.tsx
export default () => {
  return (
    <main class="flex flex-col gap-2 items-center">
      <h1>This is a protected route</h1>
    </main>
  );
};

CSRメソッドはSSRを使用する場合にも機能するはずですが、SSRメソッドはCSRを使用する場合は機能しないはずです

パラメータ

パラメーター
configSolidAuthConfig

戻り値

{
  GET: Promise<undefined | Response>;
  POST: Promise<undefined | Response>;
}

GET()

パラメータ
パラメーター
event任意
戻り値

Promise<undefined | Response>

POST()

パラメータ
パラメーター
event任意
戻り値

Promise<undefined | Response>


getSession()

getSession(req, options): GetSessionResult

パラメータ

パラメーター
reqRequest
optionsOmit<AuthConfig, "raw">

戻り値

GetSessionResult

Auth.js © Balázs Orbán and Team -2024