在Express会话中设置和检索数据

时间:2019-03-08 15:25:29

标签: node.js express session

我正在使用node.js构建一个小型应用程序并进行表达。在此应用程序中,后端有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());

2 个答案:

答案 0 :(得分:0)

如果从http运行,可以信任代理:1并将secure设置为true。否则cookie解析器将无法识别cookie。

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

enter image description here

答案 1 :(得分:0)

您以错误的顺序注册了中间件。 cookie解析器应该在会话之前出现,因为Express会话使用cookie来保存会话。

请注意,您的应用路由器应在两者都出现之后