如何从Node/Express服务器发送Cookie?

发布于 2025-02-13 02:23:02 字数 1011 浏览 2 评论 0原文

我最困难的时间将cookie从nodejs服务器发送到浏览器。以下是我的index.js(服务器端)代码:

app.use(express.json());
app.use(express.urlencoded({ extended: true }))
app.use(
  cors({
       origin: "http://localhost:3000", 
       methods: "GET,HEAD,PUT,PATCH,POST,DELETE",
       credentials: true
 })
);
let port = process.env.PORT;
if (port == null || port == "") {
  port = 5000;
}

mongoose.connect(process.env.ATLAS_URI).then(console.log("MongoDB Connection Success")).catch(err => console.log("MongoDB Connection Failed" + err))


app.use(session({
  secret: 'random secret',
  resave: false,
  saveUninitialized: false,
  // store: MongoStore.create({ mongoUrl: process.env.ATLAS_URI }),
  cookie: {
    expires: 7 * 24 * 6 * 60 * 1000,
    secure: false,
  },
}));
app.use(cookieParser())


app.use(passport.initialize())
app.use(passport.session())
app.use("/auth", auth)

我知道当我对用户进行身份验证时正在创建一个cookie,因为如果我将storeapp.use(session(session({。 ..})我在mongodb中看到了会话ID和cookie。

I am having the hardest time sending cookies from my nodejs server to my browser. Below is my index.js (server side) code:

app.use(express.json());
app.use(express.urlencoded({ extended: true }))
app.use(
  cors({
       origin: "http://localhost:3000", 
       methods: "GET,HEAD,PUT,PATCH,POST,DELETE",
       credentials: true
 })
);
let port = process.env.PORT;
if (port == null || port == "") {
  port = 5000;
}

mongoose.connect(process.env.ATLAS_URI).then(console.log("MongoDB Connection Success")).catch(err => console.log("MongoDB Connection Failed" + err))


app.use(session({
  secret: 'random secret',
  resave: false,
  saveUninitialized: false,
  // store: MongoStore.create({ mongoUrl: process.env.ATLAS_URI }),
  cookie: {
    expires: 7 * 24 * 6 * 60 * 1000,
    secure: false,
  },
}));
app.use(cookieParser())


app.use(passport.initialize())
app.use(passport.session())
app.use("/auth", auth)

I know a cookie is being created when i authenticate a user because if i uncomment out the store in app.use(session({...}) i see session IDs and cookies in my mongodb. But how can I send it to the browser?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

故人爱我别走 2025-02-20 02:23:02

尝试此会话选项的此配置。
我的Express-Session版本是“^1.17.2”,

app.use(session({
   name: 'random name',
   resave: false,
   saveUninitialized: false,
   secret: 'random secret',
   store: MongoStore.create({
       mongoUrl: config.DatabaseUrl,
       ttl: 14 * 24 * 60 * 60 // = 14 days. Default
    })
}));

如果此配置不起作用,请检查您的护照身份验证函数,以下true设置会话true如下示例:

passport.authenticate('local.register', {session: true}, (err, user): void => {
   // When res has an Error
   if (err) return res.redirect('/auth/register');
   return res.redirect('/');
})(req, res);

try this config for the session options.
my version of express-session is "^1.17.2"

app.use(session({
   name: 'random name',
   resave: false,
   saveUninitialized: false,
   secret: 'random secret',
   store: MongoStore.create({
       mongoUrl: config.DatabaseUrl,
       ttl: 14 * 24 * 60 * 60 // = 14 days. Default
    })
}));

if this config does not work, check your passport authenticate function that set session true like the below example :

passport.authenticate('local.register', {session: true}, (err, user): void => {
   // When res has an Error
   if (err) return res.redirect('/auth/register');
   return res.redirect('/');
})(req, res);
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文