我为页面创建了一个包装器,它将未经身份验证的用户弹回登录页面。
私有路由包装器:
import { useRouter } from 'next/router'
import { useUser } from '../../lib/hooks'
import Login from '../../pages/login'
const withAuth = Component => {
const Auth = (props) => {
const { user } = useUser();
const router = useRouter();
if (user === null && typeof window !== 'undefined') {
return (
<Login />
);
}
return (
<Component {...props} />
);
};
if (Component.getInitialProps) {
Auth.getInitialProps = Component.getInitialProps;
}
return Auth;
};
export default withAuth;
这有效\o/,但是我注意到当我注销时有一个行为,使用
Router.push('/',)
将用户返回到主页后退按钮包含先前路由的状态,我希望状态重置,作为一个用户未经过身份验证应该有一种体验,就好像他们从头开始......
提前谢谢您!
您始终可以使用
Router.replace('/any-route')
,用户将无法使用后退按钮返回