React
NextAuth.js 是 Auth.js 的官方 Next.js 应用程序集成。它同时支持 客户端组件 和 页面路由器。它包含用于登录、注销、钩子和 React 上下文提供程序的方法,用于包装您的应用程序并将会话数据提供给任何地方。
GetSessionParams
属性
broadcast?
optional broadcast: boolean;
event?
optional event: string;
triggerEvent?
optional triggerEvent: boolean;
SessionProviderProps
如果您有 30 天(默认值)或更长时间的会话过期时间,那么您可能不需要更改任何默认选项。
但是,如果您需要自定义会话行为和/或使用较短的会话过期时间,您可以将选项传递给提供程序以自定义 useSession 钩子的行为。
属性
basePath?
optional basePath: string;
baseUrl?
optional baseUrl: string;
children
children: ReactNode;
refetchInterval?
optional refetchInterval: number;
会话将重新获取的时间间隔(以秒为单位)。如果设置为 0
(默认值),则不会轮询会话。
refetchOnWindowFocus?
optional refetchOnWindowFocus: boolean;
SessionProvider
会在用户在窗口之间切换时自动重新获取会话。如果设置为 true
(默认值),则会激活此行为。
refetchWhenOffline?
optional refetchWhenOffline: false;
设置为 false
以在设备没有互联网访问权限离线时停止轮询(由 navigator.onLine
确定)。
session?
optional session: null | Session;
SignInOptions
扩展
Record
<string
,unknown
>
属性
callbackUrl?
optional callbackUrl: string;
已弃用
改为使用 redirectTo
。
redirect?
optional redirect: boolean;
您可能希望在同一页面上处理登录响应,而不是重定向到另一个页面。例如,如果发生错误(例如用户提供的错误凭据),您可能希望在输入字段上显示内联错误消息。
为此,您可以将此选项设置为 redirect: false
。
redirectTo?
optional redirectTo: string;
指定在成功登录后应将用户重定向到哪里。默认为启动登录的页面 URL。
SignInResponse
属性
code
code: undefined | string;
error
error: undefined | string;
ok
ok: boolean;
status
status: number;
url
url: null | string;
SignOutParams<R>
类型参数
类型参数 | 值 |
---|---|
R 扩展 boolean | true |
属性
callbackUrl?
optional callbackUrl: string;
已弃用
改为使用 redirectTo
。
redirect?
optional redirect: R;
[文档](https://next-auth.js.org/getting-started/client#using-the-redirect-false-option-1
redirectTo?
optional redirectTo: string;
如果您传递 redirect: false
,则页面不会重新加载。会话将被删除,并且 useSession
会收到通知,因此任何关于用户的指示将自动显示为已注销。它可以为用户提供非常好的体验。
LiteralUnion<T, U>
type LiteralUnion<T, U>: T | U & Record<never, never>;
类型参数
类型参数 | 值 |
---|---|
T 扩展 U | - |
U | 字符串 |
SessionContextValue<R>
type SessionContextValue<R>: R extends true ? {
data: Session;
status: "authenticated";
update: UpdateSession;
} | {
data: null;
status: "loading";
update: UpdateSession;
} : {
data: Session;
status: "authenticated";
update: UpdateSession;
} | {
data: null;
status: "unauthenticated" | "loading";
update: UpdateSession;
};
useSession() 返回一个包含三个内容的对象:一个名为 update 的方法,data
和 status
。
类型参数
类型参数 | 值 |
---|---|
R 扩展 boolean | false |
UpdateSession()
type UpdateSession: (data?) => Promise<Session | null>;
待办事项
文档
参数
参数 | 类型 |
---|---|
data ? | any |
返回
SessionContext
const SessionContext: Context<undefined | {
data: Session;
status: "authenticated";
update: UpdateSession;
} | {
data: null;
status: "loading" | "unauthenticated";
update: UpdateSession;
}>;
__NEXTAUTH
const __NEXTAUTH: AuthClientConfig;
SessionProvider()
SessionProvider(props): Element
React Context 提供程序,用于包装应用程序(pages/
),以便在任何地方都可以使用会话数据。
使用时,会话状态会自动同步到所有打开的选项卡/窗口,并在它们获得或失去焦点或状态更改时(例如,用户登录或注销)更新,前提是 SessionProviderProps.refetchOnWindowFocus 为 true
。
SessionProvider
仅用于客户端,当使用 Next.js App Router (app/
) 时,应优先使用 auth()
导出。
参数
参数 | 类型 |
---|---|
props | SessionProviderProps |
返回
元素
getCsrfToken()
getCsrfToken(): Promise<string>
返回当前跨站点请求伪造令牌 (CSRF 令牌),该令牌是进行更改状态请求(例如登录或注销或更新会话)所必需的。
返回
Promise
<string
>
getProviders()
getProviders(): Promise<null | ProvidersType>
返回当前可用提供程序的客户端安全配置对象。
返回
Promise
<null
| ProvidersType
>
getSession()
getSession(params?): Promise<null | Session>
参数
参数 | 类型 |
---|---|
params ? | GetSessionParams |
返回
signIn()
signIn<P>(
provider?,
options?,
authorizationParams?): Promise<P extends RedirectableProviderType ? SignInResponse | undefined : undefined>
启动登录流程,或将用户发送到列出所有可能提供程序的登录页面。处理 CSRF 防护。
类型参数
类型参数 | 值 |
---|---|
P extends undefined | RedirectableProviderType | undefined |
参数
参数 | 类型 |
---|---|
provider ? | LiteralUnion <P extends RedirectableProviderType ? BuiltInProviderType | P : BuiltInProviderType > |
options ? | SignInOptions |
authorizationParams ? | SignInAuthorizationParams |
返回
Promise
<P
extends RedirectableProviderType
? SignInResponse
| undefined
: undefined
>
signOut()
signOut<R>(options?): Promise<R extends true ? undefined : SignOutResponse>
通过销毁当前会话来启动注销。处理 CSRF 防护。
类型参数
类型参数 | 值 |
---|---|
R 扩展 boolean | true |
参数
参数 | 类型 |
---|---|
options ? | SignOutParams <R > |
返回
Promise
<R
extends true
? undefined
: SignOutResponse
>
useSession()
useSession<R>(options?): SessionContextValue<R>
React Hook,可让您访问已登录用户的会话数据并进行修改。
useSession
仅用于客户端,当使用 Next.js App Router (app/
) 时,应优先使用 auth()
导出。
类型参数
类型参数 |
---|
R 扩展 boolean |
参数
参数 | 类型 |
---|---|
options ? | UseSessionOptions <R > |