Next-auth - 如何更新会话客户端?
Posted
技术标签:
【中文标题】Next-auth - 如何更新会话客户端?【英文标题】:Next-auth - How to update the session client side? 【发布时间】:2022-01-21 02:28:51 【问题描述】:我设法使用新的用户数据更新我的会话服务器端,但是在将事件分配给 [...nextauth.js] 中的会话对象后,我的会话客户端仍然是旧的。如果我使用getSession()
,它不会刷新,事件。
此代码适用于后端:
callbacks.session = async function session( session, token )
// we can fetch info from back end here to add it to the session
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;
;
如何在前端刷新会话?
【问题讨论】:
【参考方案1】:没有简单的官方方法可以做到,贡献者仍在讨论中。
也就是说,有办法。如果您单击另一个选项卡,然后单击您的应用程序之一,Next-auth 会刷新会话。它发生了,这是一个我们可以重现的 javascript 事件。
所以只需定义一个方法即可:
const reloadSession = () =>
const event = new Event("visibilitychange");
document.dispatchEvent(event);
;
调用它,然后.. 就完成了。会话确实刷新了。
reloadSession();
更多信息,此行为来自this part of the code
【讨论】:
以上是关于Next-auth - 如何更新会话客户端?的主要内容,如果未能解决你的问题,请参考以下文章