当用户请求受保护的路由时,我想将他们重定向到登录页面。身份验证成功后,我想将用户重定向回最初请求的受保护路由。
在接下来的12点我曾经这样做过
import { useRouter } from "next/router"
const router = useRouter();
const onSuccess = () => {
const prev = router.query.from as string;
router.replace(prev|| '/');
};
这个答案假设您正在使用
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 ?? "/"
})