【发布时间】:2023-01-25 02:08:41
【问题描述】:
Cookie 未在浏览器中设置。我使用节点作为后端。我正在尝试搜索一些人告诉我不会设置 cookie 的问题,因为我正在使用反应作为前端和节点作为支持,两者都在本地主机的同一虚拟服务器上运行。这就是它发生的原因。 这是我的代码请帮助。用户.js
const bcrypt = require('bcrypt');
const jwt = require('jsonwebtoken');
const RegisterModel = require("../Model/RegisterModel")
const signIn = async (req,res)=>{
try {
const data = await RegisterModel.findOne({Email:req.body.email})
const passwordMatch = await bcrypt.compare(req.body.password,data.Password)
const token = await jwt.sign({Email : data.Email}, process.env.SECRET)
if(!data) return res.status(404).json({islogin:false, message: "User doesn't exist" })
if(!passwordMatch) return res.status(400).json({islogin:false,message: "Incorrect Password"})
if(passwordMatch){
res.cookie('newToken',token, { maxAge: 900000, httpOnly: false});
res.status(200).send({id:data._id,email:data.Email,name:data.Name,islogin:true,token:token})
}
} catch (error) {
res.status(404).json({islogin:false,message:"User doesn't exist"})
console.log(error)
}
}
module.exports = {signIn,signUp};
应用程序.js
const express = require('express');
var cookieParser = require('cookie-parser')
const app = express();
app.use(cookieParser())
const dotenv = require('dotenv');
dotenv.config()
var cors = require('cors')
const PORT = process.env.PORT ;
const router = require("./Router/Router")
app.use(cors())
app.use(express.json())
app.use(express.urlencoded({extended:false}));
app.use(router);
require("./Connection/Connection")
app.listen(PORT,()=>{
console.log(`Listen at Port ${PORT}` )
})
【问题讨论】:
-
你如何从前端发出请求?
-
使用 axios 我将请求登录。当登录成功时,我将生成 cookie 并尝试存储浏览器 cookie。
-
我正在尝试这个但显示新错误
-
从来源“localhost:3000”到“localhost:3001/admin/login”处的 XMLHttpRequest 的访问已被 CORS 策略阻止:对预检请求的响应未通过访问控制检查:“Access-Control-Allow-Origin”标头的值在当请求的凭据模式为“include”时,响应不能是通配符“*”。 XMLHttpRequest 发起的请求的凭据模式由 withCredentials 属性控制。
标签: node.js reactjs cookies mern