사용자 로그인 및 로그아웃 처리
사용자를 로그인시키려면, 먼저 최소한 하나의 인증 방법을 설정해야 합니다. 그런 다음 Auth.js 프레임워크 패키지에서 제공하는 로그인 함수를 호출하는 버튼을 만들어야 합니다.
./components/auth/signin-button.tsx
import { signIn } from "@/auth"
export function SignIn() {
return (
<form
action={async () => {
"use server"
await signIn()
}}
>
<button type="submit">로그인</button>
</form>
)
}
signIn
함수에 프로바이더를 전달하면 해당 프로바이더로 직접 로그인을 시도합니다. 그렇지 않으면, 애플리케이션에서 이 버튼을 클릭할 때 사용자는 설정된 로그인 페이지로 리디렉션됩니다. 만약 커스텀 로그인 페이지를 설정하지 않았다면, 사용자는 기본 로그인 페이지인 /[basePath]/signin
으로 리디렉션됩니다.
인증이 완료되면, 사용자는 로그인을 시작한 페이지로 다시 리디렉션됩니다. 만약 로그인 후 사용자를 다른 곳으로 리디렉션하고 싶다면 (예: /dashboard
), signIn
옵션에서 redirectTo
로 대상 URL을 전달하면 됩니다.
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 설정에서 내보낸 signOut
함수를 호출하는 버튼을 만들 수 있습니다.
app/components/signout-button.tsx
import { signOut } from "@/auth.ts"
export function SignOut() {
return (
<form
action={async () => {
"use server"
await signOut()
}}
>
<button type="submit">로그아웃</button>
</form>
)
}
💡
Auth.js 애플리케이션에서 GitHub과 같은 OAuth 프로바이더로 로그아웃할 때, 사용자는 GitHub에서 다른 곳에서는 로그아웃되지 않습니다.