提问人:Elora Barua 提问时间:10/21/2023 更新时间:10/21/2023 访问量:20
Cookie 在后端无法工作,同时将其作为 Node.js 中的响应发送到前端
Cookie is not working in backend while sending it to frontend as response in Node.js
问:
我在后端处理 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)
}
})
如果有人找到相关答案,请提供帮助。谢谢
答: 暂无答案
评论