Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/42.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 无法在session express js中保存数据_Node.js_Express_Session_Express Session - Fatal编程技术网

Node.js 无法在session express js中保存数据

Node.js 无法在session express js中保存数据,node.js,express,session,express-session,Node.js,Express,Session,Express Session,我的登录路径: router.post('/login', function (req, res) { var email=req.body.email; var password=req.body.password; var session=req.session; User.findOne({ email: req.body.email }, function(err, user) {

我的登录路径:

router.post('/login', function (req, res) {

          var email=req.body.email;
          var password=req.body.password;
          var session=req.session;

          User.findOne({ email: req.body.email }, function(err, user) {


              bcrypt.compare(password, user.password, function( err,data) {

                if(data) {
                  req.session.userid = user._id
                  req.session.save(function() {
                    if(req.session.userid){
                      console.log(req.session.userid);
                      res.redirect("/admin");
                    }else{
                      res.json( 'no data in session' );
                    }
                  });


                  }else{


                    res.redirect('/register/login');
                  }
              });

          });





      });

打印控制台日志:

5db87e8a09509d1d84e56d45
但当重定向/管理路由时:

router.get('/admin',function (req, res,next) {

  var session=req.session;
  console.log(session);


    } );
仅打印:

Session {
  cookie:
   { path: '/',
     _expires: null,
     originalMaxAge: null,
     httpOnly: true,
     secure: true } }
我不明白为什么会话不能获取数据或保存数据。 那么如何在会话节点js中保存数据呢。 我也使用res.save()。但是save out put。 我不使用任何软件包进行身份验证登录。 为了了解我的配置,我还添加了app.js文件。 我的app.js:=>

var express = require('express');
var path = require('path');
var app = express();
var mongoose = require('mongoose');
var bodyParser = require('body-parser');
var session = require('express-session');
var fileUpload = require('express-fileupload');
var cookieParser = require('cookie-parser')
const { check, validationResult } = require('express-validator');
var nodemailer = require('nodemailer');
// app.use( express.static( "public" ) );//for image link public folder
// var expressValidator = require('express-validator');
// var config = require('./config/database');

//mongodb connection
mongoose.connect('mongodb://localhost/test');

var db = mongoose.connection;
db.on('error', console.error.bind(console, 'connection error:'));
db.once('open', function() {
console.log('connect mongodb');

});

// Express validator middleware
// app.use(expressValidator({
//     errorFormatter: function(param, msg, value) {
//         var namespace = param.split('.')
//         , root    = namespace.shift()
//         , formParam = root;

//       while(namespace.length) {
//         formParam += '[' + namespace.shift() + ']';
//       }
//       return {
//         param : formParam,
//         msg   : msg,
//         value : value
//       };
//     }
//   }));

//express message middleware
app.use(require('connect-flash')());
app.use(function (req, res, next) {
  res.locals.messages = require('express-messages')(req, res);
  next();
});

// set the view engine to ejs
app.set('views', path.join(__dirname, 'views')); 
app.set('view engine', 'ejs');

///public folder
app.use(express.static(path.join(__dirname, 'public')));

//express file upload middleware
app.use(fileUpload());
//cookie parser middleware
app.use(cookieParser())
//body parser middleware
// parse application/x-www-form-urlencoded
app.use(bodyParser.urlencoded({ extended: false }))

// parse application/json
app.use(bodyParser.json())

// express sesson  middleware
app.use(session({
    secret: 'keyboard cat',
    resave: false,
    saveUninitialized: true,
    cookie: { secure: true }
  }))


  //route declair heree
var home=require('./routes/home');
var admin=require('./routes/admin');
var register=require('./routes/register');


//home route
app.use('/',home);
//admin route
app.use('/admin',admin);
//register route
app.use('/register',register);



//header category list
var Category=require('./models/category');


Category.find(function (err, categories) {
  if (err) {
      console.log(err);
  } else {
      app.locals.categories = categories;

  }
});


///header category list

var port = 3000;
app.listen(port, () => console.log(`Example app listening on port ${port}!`));
``

localhost
中保留
cookie:{secure:false}
。因为,若您保持
true
,那个么浏览器需要一个HTTPS请求。检查


另外,如果您使用的是
express
version
v4.16.0
或更高版本,则不需要
body parser
模块。请检查并发布会话配置。

。您在
app.use({…})