reactjs 下一个认证会话不会更新,直到我刷新页面或导航到另一个页面

eivgtgni  于 11个月前  发布在  React
关注(0)|答案(2)|浏览(214)

所以,我用Next.js 13和Next-auth构建了一个应用程序,我有凭证身份验证(MongoDb和prisma)。例如,如果用户经过身份验证,我会导航到/教哪个是受保护的页面。但是当我点击退出时,页面不会说你没有访问此页面的权限,但是如果我刷新页面或导航到另一个页面或回来,它会工作。同样的退出按钮,如果我刷新页面,我会看到注销按钮,但否则,登录后,我不会看到注销,直到我刷新。
我不确定是否有一个变通办法和官方解决方案,但如果你能帮助我,我将不胜感激。
x1c 0d1x的数据
我尝试了几种方法,刷新页面挂载例如,但无法修复。



wj8zmpe1

wj8zmpe11#

我遇到了这个问题。我做到了:

<button onClick={logOut}>SignOut</button>

字符串
我的注销功能:

async function logOut(){
    await signOut();
    location.reload()
}


我读到signOut()函数的默认行为是刷新页面。nextAuth的signOut没有做到这一点。所以我认为这是nextAuth中的一个bug。所以我只是在注销后强制页面重新加载,这对我很有效。干杯!

tkqqtvp1

tkqqtvp12#

nextauth credentials authentication不会像oauth providers那样进行回调刷新,作为一种解决方案,您可以调用客户端useSession()并重新加载登录页面,而不是通过服务器端getServerSession()方法检查会话,如下所示:

const { data: session } = useSession()
  if (session) router.reload()

字符串

相关问题