Next.js Nextjs保护路由

Next.js Nextjs保护路由,next.js,Next.js,在nextjs中有许多方法可以保护路由。我不需要在每一页ssr。所以我在useEffect钩子中使用条件渲染,根据身份验证状态重定向用户。如果未通过身份验证,则重定向到“/”。如果用户登录并尝试访问“/”,它将重定向到经过身份验证的页面 假设有三个页面/、/[user]和/[user]/dashboard。我的“/”页面具有登录表单,当用户进行身份验证时,它将重定向到“/[user]/dashboard”。如果用户在验证后尝试访问“/”,则它将重定向到“/[user]/dashboard”。现在

在nextjs中有许多方法可以保护路由。我不需要在每一页ssr。所以我在useEffect钩子中使用条件渲染,根据身份验证状态重定向用户。如果未通过身份验证,则重定向到“/”。如果用户登录并尝试访问“/”,它将重定向到经过身份验证的页面

假设有三个页面/、/[user]和/[user]/dashboard。我的“/”页面具有登录表单,当用户进行身份验证时,它将重定向到“/[user]/dashboard”。如果用户在验证后尝试访问“/”,则它将重定向到“/[user]/dashboard”。现在,当我转到“/[user]”并点击刷新时,我会自动重定向到“/[user]/dashboard”

如何解决这个问题

//context.tsx
const UserContext=createContext({user:null});
导出函数UserProvider({children}:UserProviderProps){
const[user]=useAuthState(auth);
useffect(()=>{
如果(!user&&location.pathname!==“/”){
路由器。替换(“/”);
}else if(user&&location.pathname==“/”){
替换(`${user.displayName}/dashboard`);
}
});
返回(
{儿童}
);
}
export const useAuth=()=>useContext(UserContext);
//pages/[user]/index.tsx
常量配置文件=()=>{
const{user}=useAuth();
返回(
{user?.displayName}
);
};
导出默认配置文件;

编辑以包含相关代码