处理登录和注销
要登录用户,请确保您至少设置了一种身份验证方法。然后,您需要构建一个按钮,该按钮将调用您 Auth.js 框架包中的登录功能。
./components/auth/signin-button.tsx
import { signIn } from "@/auth.ts"
export function SignIn() {
return (
<form
action={async () => {
"use server"
await signIn()
}}
>
<button type="submit">Sign in</button>
</form>
)
}
您还可以向signIn
函数传递一个提供商,该函数将尝试直接使用该提供商登录。否则,当在您的应用程序中点击此按钮时,用户将被重定向到配置的登录页面。如果您没有设置自定义登录页面,用户将被重定向到位于/[basePath]/signin
的默认登录页面。
验证成功后,用户将被重定向回他们开始登录的页面。如果您希望用户在登录后被重定向到其他地方(例如/dashboard
),您可以通过在登录选项中传递目标 URL 作为redirectTo
来实现这一点。
app/components/signin-button.tsx
import { signIn } from "@/auth.ts"
export function SignIn() {
return (
<form
action={async () => {
"use server"
await signIn("github", { redirectTo: "/dashboard" })
}}
>
<button type="submit">Sign in</button>
</form>
)
}
注销
注销的方式与登录类似。大多数框架都提供客户端和服务器端方法来注销。
要使用表单操作注销用户,您可以构建一个调用 Auth.js 配置中导出的注销功能的按钮。
app/components/signout-button.tsx
import { signOut } from "@/auth.ts"
export function SignOut() {
return (
<form
action={async () => {
"use server"
await signOut()
}}
>
<button type="submit">Sign Out</button>
</form>
)
}
💡
请注意,当注销 Auth.js 应用程序中的 GitHub 等 OAuth 提供商时,用户不会在其他地方注销 GitHub。