Node.js 下一个JS express jwt身份验证

Node.js 下一个JS express jwt身份验证,node.js,express,authentication,jwt,next.js,Node.js,Express,Authentication,Jwt,Next.js,我已经实现了一个/api/login来登录用户。我还有一个页面login.js,它将表单数据发送到登录API。我的登录api检查数据库中的用户凭据,然后对令牌进行签名并将其保存到cookie中。 我的/api/login: 等待authCollection.findOne( { authCode:req.body.authCode, }, 功能(错误、文档){ 如果(错误)抛出错误; 如果(!doc)返回res.status(400).send('auth not found'); 国际单项体育

我已经实现了一个
/api/login
来登录用户。我还有一个页面
login.js
,它将表单数据发送到登录API。我的登录api检查数据库中的用户凭据,然后对令牌进行签名并将其保存到cookie中。 我的
/api/login

等待authCollection.findOne(
{
authCode:req.body.authCode,
},
功能(错误、文档){
如果(错误)抛出错误;
如果(!doc)返回res.status(400).send('auth not found');
国际单项体育联合会(doc){
const-token=jwt.sign({u-id:doc.\u-id},process.env.token\u-SECRET);
物件
.现状(200)
.cookie('token',token{
最大值:2*60*60*1000,
httpOnly:false,
})
.发送(令牌);
}
},
);
我可以通过如下方式传递中间件来保护我的api路由:

功能(请求、恢复、下一步){
const token=req.cookies.token | |“”;
如果(!令牌){
返回res.status(401.send)(“访问被拒绝”);
}
试一试{
const decrypt=jwt.verify(令牌,process.env.token\u SECRET);
请求用户={
id:decrypt.id,
名字:解密。\u id,
};
next();
}捕捉(错误){
res.status(400.send)(“无效令牌”);
}
}

我不明白如何保护我的
/pages
目录中的正常页面。谁能给我一个正确方向的提示?我已经在谷歌上搜索并阅读了每个页面,但无法实现,这取决于,我所做的是编写一个hoc
privateArea
,它返回一个新组件,从API获取用户
accessToken
,然后对其进行解码,如果用户登录,则呈现包装好的页面,否则呈现“受限区域”消息

导出功能私有区(PageComponent){
const PrivateArea=({accessToken,pageProps})=>{
const user=decodeToken(accessToken);
如果(用户){
返回;
}否则{
返回;
}
};
PrivateArea.getInitialProps=async(…args)=>{
const accessToken=await api.getAccessToken();
if(PageComponent.getInitilProps的类型==='function'){
const pageProps=await PageComponent.getInitilProps(…args);
}
返回{
accessToken,
pageProps:pageProps | |{},
};
};
返回私密区;
}

与问题无关,但最好使用