快速会话值自动销毁

问题描述 投票:0回答:1

我是吝啬的新手。我有一个问题。我使用快速会话,但是当我设置会话时,我可以第一次获得会话值。下次当我调用相同的函数或其他函数时,我无法获得会话值。会话值自动销毁。我已经尝试过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;
session mean-stack
1个回答
0
投票

您可以在快速会话中设置会话的最长期限

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

}));

© www.soinside.com 2019 - 2024. All rights reserved.