Next.js 13中认证后重定向到上一个查询页面?

问题描述 投票:0回答:1

当用户请求受保护的路由时,我想将他们重定向到登录页面。身份验证成功后,我想将用户重定向回最初请求的受保护路由。

在接下来的12点我曾经这样做过

import { useRouter } from "next/router"

const router = useRouter();

const onSuccess = () => {
    const prev = router.query.from as string;
    router.replace(prev|| '/');
};
javascript reactjs typescript next.js next
1个回答
0
投票

这个答案假设您正在使用

next-auth
,但无论如何都是一样的。

这是同样的概念,当你将它们重定向到登录页面时,只需在 url 中添加一个 searchParam

if (!session) {
  redirect("/login?from=" + pathname)
}

然后在登录页面,将

signIn()
选项的callbackUrl设置为该路径或URL。

import {useSearchParams} from "next/navigation"
import {signIn} from "next-auth/react"

const searchParams = useSearchParams()
const from = searchParams.get("from")

await signIn("google", {
  callbackUrl: from ?? "/"
})
© www.soinside.com 2019 - 2024. All rights reserved.