簡介
- Session 對象:
{
user: {
name: string
email: string
image: string
},
expires: Date
}
- Session 數(shù)據(jù)對象并不包含敏感信息,比如Session-Token或者OAuth-Token,它只加載頁面顯示所需要的最小數(shù)據(jù),比如Name、Email、Image,如果需要自定義sessiion對象,需要使用 session callback
- 需要確保
<SessionProvider>添加到pages/_app.js中,并作為頂級元素。 - 使用舉例:
import { useSession } from "next-auth/react"
export default function Component() {
const { data: session, status } = useSession()
if (status === "authenticated") {
return <p>Signed in as {session.user.email}</p>
}
return <a href="/api/auth/signin">Sign in</a>
}
useSession()
注意,這個函數(shù)客戶端可用,但是服務端是不可用的。
useSession()returns an object containing two values:dataandstatus:-
data的取值可能是undefined或null.- 當session不存在時
data返回undefined - 當session檢索失敗時,
data返回null - 在成功的情況下
data返回Session.
- 當session不存在時
status: 是一個枚舉,取值包括"loading" | "authenticated" | "unauthenticated"
onUnauthenticated() 回調(diào)
- 通常情況下,可以再 useSession 中加入 onUnauthenticated() 回調(diào)來處理沒有授權的情況,舉例:
import { useSession } from "next-auth/react"
export default function Admin() {
const { status } = useSession({
required: true,
onUnauthenticated() {
// The user is not authenticated, handle it here.
},
})
if (status === "loading") {
return "Loading or not authenticated..."
}
return "User is logged in"
}