Jov*_*nka 5 authentication session next.js next-auth
我有一个页面来更新用户数据,一切都运行正常,并且数据已随数据库中的最新数据更改。但是下一个auth会话中的值没有改变,如何将新更新的用户数据与下一个auth会话中的用户数据同步
首先,您必须更新数据,[...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;
};
Run Code Online (Sandbox Code Playgroud)
所以在这里,本应是服务器旧会话的会话被我的数据库会话所取代。
然后,您必须更新它的客户端。
如果您单击另一个选项卡并再次单击您的选项卡,客户端的数据会更新。
看起来没什么用,但是自动化怎么样?
只需使用这个:
const reloadSession = () => {
const event = new Event("visibilitychange");
document.dispatchEvent(event);
};
Run Code Online (Sandbox Code Playgroud)
直接在你的反应页面上调用它将会更新所有内容。
reloadSession();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6257 次 |
| 最近记录: |