mongoose 如何在Nextjs API路由中获取cookie?

g52tjvyc  于 2023-05-07  发布在  Go
关注(0)|答案(1)|浏览(166)

我正在用Next.Js和MongoDB构建一个笔记应用程序。我创建了一个登录系统,允许用户创建帐户并登录以创建笔记。
对于身份验证,我使用JWT。当用户登录时,将创建名为jwtToken的cookie。Token包含nameemail
我在/api/createNote.js中创建了一个名为createNote的API。在API路由中,我想访问一个cookie jwtToken,以便在下一步之前验证用户是否登录。
/api/createNote.js中,我访问cookie(jwt令牌)并对其进行解码以获得email

const token = req.cookies.jwtToken;
const data = jwt.decode(token);
const email = data.email;

在将email记录到控制台或仅将其作为json(如res.json({data}))发送时,我没有看到任何错误。这是可行的,但实际上当我在if语句中使用它时会出现问题。enter image description here
代码如下:

if(!email){
res.json({msg: "Your are not logged in! Please login first.})
}else if(email){
// do something
}

我在console中看到这个errorenter image description here

注意事项

只有在if语句中使用email时才会出现问题。我不知道为什么请帮助我哪里是错误或如何解决它?
我想让代码工作。

kyvafyod

kyvafyod1#

// data itself could be null
 // if data is null and data.email will throw error
 const data = jwt.decode(token) as { email: string };
  
   
  if (!data.email) {
    return res.status(401).json({
      msg: "Your are not logged in! Please login first."
    });
  }

相关问题