【发布时间】:2022-12-04 11:59:19
【问题描述】:
我正在构建一个多租户 NextJS 应用程序,它使用 next-auth 进行帐户身份验证,使用 tRPC 进行 API,使用 postgresql 进行数据存储。
我正在尝试找到一种方法来根据某些客户端交互动态更新/设置/改变会话值
我采用的方法类似于this article中描述的方法:
-
User被授权通过Membership访问Organization - 一个
User可能有一个Membership到>1个Organization -
User可以更改他们通过某些客户端 UI“登录”到的Organization。
当用户进行身份验证时,我想:
- 将
session.user.orgId设置为某个 orgId(如果它们属于某个组织)
当用户更改他们通过某些客户端 UI 访问的组织时,我想:
- 更新
session.user.orgId = newOrgId(当然,在这样做之前验证他们有适当的权限)。
我在网上搜索了更新/改变会话值的方法,据我所知,只有使用 next-auth 的 callbacks 才有可能:
...
callbacks: {
async session({ session, user, token }) {
// we can modify session here, i.e `session.orgId = 'blah'`
// or look up a value in the db and attach it here.
return session
},
...
}
但是,在身份验证流程之外,没有明确的方法从客户端触发此更新。即,如果用户在某些 UI 中单击以更改其组织,我如何验证更改并更新会话值,而不需要用户重新进行身份验证?
【问题讨论】:
-
可能是重复的。这个答案有帮助吗? stackoverflow.com/a/70405437/675065