express session如何存到cookie里面,session的值也取不到

在我的控制台可以看见(chrome)

set-cookie:connect.sid=s%3AmmT6Om_AeH_4xyfK1lnN2Slbq8Ue5hI0.okHi82UORbpwOpz8YX2zDtsnR4FKAjcZXTjAQ1b7Cwk; Path=/; Expires=Fri, 29 Sep 2017 09:34:13 GMT; HttpOnly

但是在cookie中找不到,这是为什么啊?

var session = require('express-session');
var cookieParser = require('cookie-parser');

app.use(cookieParser("keyboard cat"))
  app.use(session({
    secret: 'keyboard cat', 
    cookie: ({ maxAge:  60000 }),
    resave: false,
    saveUninitialized: true
  }))

怎么样才能保存到cookie里面去啊,需要从前端获取然后再向cookie保存吗

session的值也取不到呀

app.post('/api/user/login', function (req, res) {
      let name=req.body.name
      let pwd =req.body.pwd
    db.userModel.findOne({name: req.body.name}, function(err, doc){
        if(!err){
          if(!doc){
            res.json({code:100})//账号不存在
            return
          }else{
            if(pwd != doc.pwd){
              res.json({code:200})//密码不正确
              return
            }else{
              res.json({code:300})//登录成功
              req.session.name=name
              console.log(req.session.name)
            }
          }
        }else{
          alert('internet err')
        }
    })
  })
app.post('/api/user/signup', function (req, res) {
    if(req.session.name){
      console.log(req.session.name)
    }else{
      console.log('shibai')
    }
   })

第一个console能正常打印 下面signup里面就是直接打印了失败,取不到req.session.name的值,前端端口在 8080 node 在8889 mongodb在 27017 跨域是前端配置的proxy。

阅读 5.3k
2 个回答
  • 首先确定你自己的node服务是正常的,直接访问/api/user/login,看看res的header里面的东西,正常来讲应该是有JSESSIONID这个cookie的,如果没有那就是node服务都有问题咯
  • 其次,node服务如果没问题,那你前端的proxy在做转发的时候,是不是把node服务发过来的东西都转发到前端去了?
  • 最后,你的前端代码贴一点,前端用的什么工具发的请求?如果是fetch的话,记得设置credentials
新手上路,请多包涵

你先检测一下那么是否有值,你数据库返回的结果是doc....如果是要存name也应该是doc.name吧,如果想要存入cookie 最好是先生成cookie,再通过cookie生成session,中途记得要加密..

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题