【问题标题】:Setting and Retrieving data from session with express使用 express 从会话中设置和检索数据
【发布时间】:2019-03-08 15:25:29
【问题描述】:

我正在使用 node.js 和 express 构建一个小型应用程序。在此应用程序中,后端有 2 条路由,一条用于用户,一条用于用户可以添加的错误。

我的目标是使用 sessionExpress 将用户保存在会话中,然后在向系统添加错误时检索它。

我的代码:

  app.get('/api/login',(req,res)=>{
    const user = req.body
    userService.checkLogin(user)
    .then(user=>{
        req.session.user = user   
        res.send(user)
    }).catch(err=>res.end(err))
})

这里我将用户保存到会话中。

   app.post('/api/bug/', (req, res) => {
    const bug = req.body
  console.log(req.session.user)
    bugService.add(bug)
        .then(bug => res.json(bug))
})

在不同的路线上,我试图让用户回来,但 req.session.user 返回未定义!

任何帮助将不胜感激!

如果需要更多代码,请告诉我

const express = require('express');
const bodyParser = require('body-parser')
const session = require('express-session')
const cookieParser = require('cookie-parser')
var app = express()


app.use(bodyParser.json())
app.use(bodyParser.urlencoded({ extended: false }))
app.use(express.static("public"));
app.use(session({
    secret: 'secret',
    resave: false,
    saveUninitialized: true,
    cookie: { secure: false,maxAge:null }
}))
app.use(cookieParser());

【问题讨论】:

  • 你能发布你的 server.js/app.js 来展示你是如何初始化 express-session 中间件的吗?
  • 添加了server.js

标签: node.js express session


【解决方案1】:

如果您从 http 运行它,您可以信任代理:1 并将安全设置为 true。否则 cookie-parser 将无法识别 cookie。

从前端确保您使用凭据发出请求。

【讨论】:

    【解决方案2】:

    您以错误的顺序注册中间件。 cookie 解析器应该在 session 之前,因为 express session 使用 cookie 来保存 session。

    请注意,您的应用程序路由器应该在它们之后出现

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-12-18
      • 1970-01-01
      • 2013-10-12
      • 2018-06-03
      • 2012-07-26
      • 1970-01-01
      • 2017-07-21
      相关资源
      最近更新 更多