通过 next-auth 中的回调自定义会话对象

don*_*son 5 reactjs next.js next-auth

我在用着"next": "^11.0.1""next-auth": "^3.27.3"。我需要自定义钩子提供的会话对象来访问客户端的用户信息。这是我的回调代码:

callbacks: {    
    async jwt (token, user) {
      console.log(user)
      if (user){
        token = { ...token, username: user?.user, password: user?.password }
        return token
      }
      else {
        return token
      }
    },
    async session( session, token) {
      // Send properties to the client, like an access_token from a provider.
      console.log("session: ", session)
      console.log("passed token:", token)
      return session
    },
},
Run Code Online (Sandbox Code Playgroud)

这是我的应用程序

const SeatingPage: NextPage = () => {
    const [session, loading] = useSession()

    useEffect(() => {
      if (loading) return
      if (!session) signIn()
    }, [session, loading])

    if (!session) return <p>loading</p>
    return <p>Hello world</p>
}
Run Code Online (Sandbox Code Playgroud)

如果我理解正确的话, in 中的 token 参数jwt()就是我在authorize(). 该应用程序由于某种原因运行jwt()两次。但是,只有在第一次调用时令牌才具有正确的值,而{user: "xyz", password: "xyz"}第二次令牌是空对象。并且session()永远不会获得正确的参数{ ...token, username: user?.user, password: user?.password },但总是获得基本令牌。