Экспресс-сессия автоматически уничтожается - PullRequest
0 голосов
/ 13 сентября 2018

Я новичок в стеке.У меня есть одна проблема.Я использовал экспресс-сеанс, но когда я установил сеанс, я могу получить значение сеанса в первый раз.В следующий раз, когда я вызываю ту же функцию или другую функцию, я не могу получить значение сеанса.значение сеанса уничтожается автоматически.Я уже пробовал express-session, express-cookie и express-session-cookie, но безуспешно.

Любое решение?

server.js код:

const express = require('express');
path = require('path');
bodyParser = require('body-parser');
cors = require('cors');
mongoose = require('mongoose');
config = require('./config/DB');
const app = express();
var session = require('express-session');
var cookieParser = require('cookie-parser');
app.use(cookieParser());
app.use(session({
    secret: "Shh, its a secret!",
    resave: false, 
    saveUninitialized: true, 
    cookie: { secure: true }  
}));
mongoose.Promise = global.Promise;
const signUpRoutes = require('./routes/signup.route');
const logInRoutes = require('./routes/login.route');
app.use(bodyParser.json());
app.use(cors());
const port = process.env.PORT || 4000;
app.use('/signup', signUpRoutes);
app.use('/login', logInRoutes);
const server = app.listen(port, function(){
 console.log('Listening on port ' + port);
});

login.route.js:

const express = require('express');
var logInRoutes = express.Router();
mongoose = require('mongoose');
const bcrypt = require('bcrypt');
var MongoClient = require('mongodb').MongoClient;
var url = "mongodb://localhost:27017/";
// Defined login route
logInRoutes.route('/login').post(function (req, res) {

MongoClient.connect(url, function(err, db) {
if (err) throw err;
  var check_dbo = db.db('eclipsia');
  var given_email=req.body.email;
  var given_password=req.body.password;
  check_dbo.collection("company").findOne({company_email: given_email}, 
function(err, result) {
      if(result){
           if(bcrypt.compareSync(given_password, result.password)) {
                req.session.email= result.company_email;
                req.session.company_id= result._id;
                req.session.save();
                if(req.session.email){
                    res.status(200).json({'return_data': '1' }); 
                }else {
                    res.status(200).json({'return_data': '0'});
                }

           }else { 
            res.status(200).json({'return_data': '2'});
           }
      }else{ 
            res.status(200).json({'return_data': '3'});
      }
   });
 });
});
logInRoutes.route('/login_check').get(function (req, res) {

    if(req.session.email){
        res.status(200).json({'return_data': '1'}); 
    } else {
        res.status(200).json({'return_data': '0'});
    }

});
module.exports = logInRoutes;

1 Ответ

0 голосов
/ 13 сентября 2018

Вы можете установить максимальный возраст сеанса, срок действия которого истек в экспресс-сеансе

app.use(session({
secret: 'keyboard cat',
cookie: { secure: false,expires:  new Date(Date.now() + (90 * 86400 * 1000)) },  //  session valid for 90 days
resave: true,
saveUninitialized: true

}));

...