我正在使用React和Next.js开发一个项目。身份验证路由无法正常工作。我当时在想我的私有路由JS文件中的getInitialProps
函数没有被触发。
谁能看到哪里出了问题?预先感谢!
import redirect from "./redirect";
import cookie from "cookie";
function parseCookies(req, options = {}) {
return cookie.parse(
req ? req.headers.cookie || "" : document.cookie,
options
);
}
export default ({ WrappedComponent, checkKeys, operation }) => {
return class PrivateRoute extends React.Component {
static async getInitialProps(ctx) {
const { req, res } = ctx;
console.log("router", ctx);
console.log(parseCookies(req));
if (
(!operation || operation === "and") &&
!checkKeys.every((key) => {
return parseCookies(req)[key] ? true : false;
})
) {
redirect(res);
return;
} else if (
operation === "or" &&
!checkKeys.some((key) => {
return parseCookies(req)[key] ? true : false;
})
) {
redirect(res);
}
return {};
}
render() {
return <WrappedComponent {...this.props} />;
}
};
};
在pages
文件夹下,我创建了一个onboarding.js
文件,如下所示:
import Onboarding from '../../src/components/Vendor/Onboarding';
import PrivateRoute from '../../src/helper/PrivateRoute';
import { storeKeys } from '../../src/store';
export default PrivateRoute({
WrappedComponent: Onboarding,
checkKeys: [storeKeys.token],
});