M. *_*Dev 4 authentication reactjs next.js next-auth
在 Next-auth 中,我们可以获取会话相关信息,例如用户:{name,email .. etc}
如下:
import { useSession } from "next-auth/client"
export default function Component() {
const [session, loading] = useSession()
if (session) {
return <p>Signed in as {session.user.email}</p>
}
return <a href="/api/auth/signin">Sign in</a>
}
Run Code Online (Sandbox Code Playgroud)
我还想获取要使用的组件中的当前提供程序名称。供您参考,next-auth 支持许多提供商登录,例如 Facebook、Twitter .. 等
例如,如果用户通过 Twitter Api 登录,我想获取这条信息并将其打印在他的个人资料页面中。
来源: https: //next-auth.js.org/v3/getting-started/client#usesession
Callbacks可用于将附加数据传递给session对象。
Provider用户首次登录时会提供详细信息。
您可以使用jwt回调将数据存储在jwtcookie 中。
在 [...nextauth].js 中:
const callbacks = {}
callbacks.jwt = async function jwt(token, user , account) {
if (user) {
token = { id: user.id , provider:account.provider , ...moreData}
}
return token
}
const options = {
providers,
callbacks
}
Run Code Online (Sandbox Code Playgroud)
注意:您还需要使用session回调将token数据传递给useSession挂钩。
callbacks.session = async function session(session, token) {
session.user = {
provider : token.provider,
id: dbUser.id,
profile: dbUser.profile,
}
return session
}
export default (req, res) => NextAuth(req, res, options)
Run Code Online (Sandbox Code Playgroud)
这样提供者将被存储在令牌中以供后续请求。
在此处了解有关回调的更多信息:回调
| 归档时间: |
|
| 查看次数: |
6707 次 |
| 最近记录: |