VOOZH about

URL: https://next-auth.js.org/

⇱ NextAuth.js


Skip to main content
🎉 NextAuth.js is now part of Better Auth!

Open Source. Full Stack. Own Your Data.

Easy

  • Built in support for popular services
    (Google, Facebook, Auth0, Apple…)
  • Built in email / passwordless / magic link
  • Use with any username / password store
  • Use with OAuth 1.0 & 2.0 services

Flexible

  • Built for Serverless, runs anywhere
  • Bring Your Own Database - or none!
    (MySQL, Postgres, MSSQL, MongoDB…)
  • Choose database sessions or JWT
  • Secure web pages and API routes

Secure

  • Signed, prefixed, server-only cookies
  • HTTP POST + CSRF Token validation
  • JWT with JWS / JWE / JWK
  • Tab syncing, auto-revalidation, keepalives
  • Doesn't rely on client side JavaScript

Add authentication in minutes!

Server /pages/api/auth/[...nextauth].js

importNextAuthfrom'next-auth'
importAppleProviderfrom'next-auth/providers/apple'
importFacebookProviderfrom'next-auth/providers/facebook'
importGoogleProviderfrom'next-auth/providers/google'
importEmailProviderfrom'next-auth/providers/email'

exportdefaultNextAuth({
providers:[
// OAuth authentication providers...
AppleProvider({
clientId: process.env.APPLE_ID,
clientSecret: process.env.APPLE_SECRET
}),
FacebookProvider({
clientId: process.env.FACEBOOK_ID,
clientSecret: process.env.FACEBOOK_SECRET
}),
GoogleProvider({
clientId: process.env.GOOGLE_ID,
clientSecret: process.env.GOOGLE_SECRET
}),
// Passwordless / email sign in
EmailProvider({
server: process.env.MAIL_SERVER,
from:'NextAuth.js <no-reply@example.com>'
}),
]
})

Client (App) /pages/_app.jsx

import{SessionProvider}from"next-auth/react"

exportdefaultfunctionApp({
Component,pageProps:{ session,...pageProps }
}){
return(
<SessionProvider session={session}>
<Component{...pageProps}/>
</SessionProvider>
)
}

Client (Page) /pages/index.js

import{ useSession, signIn, signOut }from"next-auth/react"

exportdefaultfunctionComponent(){
const{data: session }=useSession()
if(session){
return<>
Signedinas{session.user.email}<br/>
<button onClick={()=>signOut()}>Sign out</button>
</>
}
return<>
Not signed in<br/>
<button onClick={()=>signIn()}>Signin</button>
</>
}

NextAuth.js is an open source community project.