【问题标题】:update the user value in the next auth session when updating data更新数据时在下一个身份验证会话中更新用户值
【发布时间】:2022-01-14 20:49:33
【问题描述】:

我有一个更新用户数据的页面,一切运行正常,并且数据已随着数据库中的最新数据而更改。但是next auth session中的值没有变化,如何将新更新的用户数据与next auth session中的用户数据同步

【问题讨论】:

  • 你解决了吗?这个网站已经死了,这个问题只有 7 次浏览
  • 我还不能完成。现在我正在使用 id 进行欺骗,因为它的性质没有改变,但我仍然需要一个答案来解决这个案例

标签: authentication session next.js next-auth


【解决方案1】:

首先您必须更新[...nextauth].js 上的数据 它通过服务器会话跟踪用户,但您需要来自服务器的新数据。这是我的做法:

callbacks.session = async function session({ session, token }) {
  // we can fetch info from back end here to add it to the sessio
  session.user = token.user;
  session.jti = token.jti;

  // If user is logged, we refresh his session
  if (token?.user?.id) {
    const url = 
   routes.api.entities.shop.get.byId.build(token?.user?.id);
    let apiResp = await axios.get(url, {});
    session.user = { ...apiResp.data };
    token.user = { ...apiResp.data };
  }

  return session;
};

所以在这里,应该是旧的服务器会话被我的数据库替换。

然后,你必须在客户端更新它。

如果您单击另一个选项卡并再次单击您的选项卡,客户端的数据会更新。

这似乎没什么用,但是自动化呢?

就用这个吧:

const reloadSession = () => {
  const event = new Event("visibilitychange");
  document.dispatchEvent(event);
};

直接在您的反应页面上调用它会更新所有内容。

reloadSession();

【讨论】:

    猜你喜欢
    • 2022-12-11
    • 2011-04-16
    • 2023-03-23
    • 1970-01-01
    • 1970-01-01
    • 2019-10-22
    • 1970-01-01
    • 2021-10-04
    • 2019-04-03
    相关资源
    最近更新 更多