Cookie 在后端无法工作,同时将其作为 Node.js 中的响应发送到前端

Cookie is not working in backend while sending it to frontend as response in Node.js

提问人:Elora Barua 提问时间:10/21/2023 更新时间:10/21/2023 访问量:20

问:

我在后端处理 Node.js 和 Next.js 项目时创建了一个带有令牌的 cookie。每当我向前端发送响应时,它都运行良好并成功返回令牌,但无法设置 cookie。没有 cookie 作为响应,并且在控制台中显示未定义。我已经安装了“cookie-parser”软件包

这是我的控制器、令牌生成器和客户端的代码。在控制器中,“console.log(req.cookies.accessToken)”未定义

控制器

const adminModel = require("../models/adminModel");
const { responseReturn } = require("../utiles/response");
const { createToken } = require("../utiles/tokenCreate");
const bcrypt = require("bcrypt");
const jwt = require("jsonwebtoken");



class authControllers {
  admin_login = async (req, res) => {
    const { email, password } = req.body;

    try {
      const admin = await adminModel.findOne({ email }).select("+password");

      if (admin) {
        const match = await bcrypt.compare(password, admin.password);
        
        
        if (match) {
          const token = await createToken({
            id: admin._id.valueOf(),
            role: admin.role,
          });

          res.cookie("accessToken", token);
          responseReturn(res, 200, { token, message: "Login success" });
          console.log(req.cookies.accessToken);
        
        } 
        else {
          responseReturn(res, 404, { error: "Password wrong" });
        }
      } 
      
      else {
        responseReturn(res, 404, { error: "Email not found" });
      }
    } 
    catch (error) {
      responseReturn(res, 500, { error: error.message });
    }
    
  };
}

module.exports = new authControllers();

令牌生成

const jwt = require('jsonwebtoken')


module.exports.createToken = async(data) => {
    
    const token = await jwt.sign(data , process.env.SECRET , {
        expiresIn: '7d'})

    return token;
    
}

这是客户端代码

export const adminLogin = createAsyncThunk("auth/adminLogin" , async(info) => {
    try{
        console.log(info);
        const url = "http://localhost:5000/api/admin-login";
        await fetch(url, {
          method: "POST",
          headers: {
            "content-type": "application/json",
          },
          body: JSON.stringify(info),
        })
          .then((res) => res.json())
          .then((res) =>console.log(res)
          );
    }
    catch(error){
        console.log(error.response.data)
    }
})

如果有人找到相关答案,请提供帮助。谢谢

节点 .js Cookie 错误处理 未定义

评论

0赞 Tore Nestenius 10/22/2023
我确实在 nestenius.se/2023/10/09/debugging-cookie-problems 上发表了一篇关于诊断cookie问题的博客文章

答: 暂无答案