保存和检索req.session

时间:2019-06-10 11:04:19

标签: node.js express express-session

我搜索了其他问题,但似乎没有一个对我有帮助。我正在尝试使用express-session模块将搜索的参数保存在angularJs的表中。 当用户登录时,我已经在会话中保存了一些信息(工作正常)。但是,当我尝试对过滤器执行相同操作时,它不起作用

这就是我用的

在server.js中

var session = require('express-session');
var passport = require('passport');
var app = express();

app.use(session({ 
   secret: 'secret' ,
   saveUninitialized: true,
   resave: true, 
})); 

在AngularJs中,我调用该函数来设置和检索会话数据

检索数据

$http.get(apihost + '/customSessionFilters/getSessionFilters')
   .success(function (getCurrentFilters) {

       if(getCurrentFilters.status == 'filters') {
           console.log(getCurrentFilters);
       }
       else {
           console.log('no filters');
       }
   })
   .error(function (err) {
       Notification.error(err.message);
   });

设置数据

var filters = angular.toJson($scope.searchParams);
$http.post(apihost + '/customSessionFilters/setSessionFilters/' + filters)
 .success(function (setCurrentFilters) {
    console.log(setCurrentFilters);
    })
     .error(function (err) {
         Notification.error(err.message);
    });

然后是nodejs中的2个功能

设置数据

var express = require('express');
var router = express.Router();
var session = require('express-session');

router.post('/setSessionFilters/:paramsFilter',function(req,res,next) {

    var filters = JSON.parse(req.params.paramsFilter);

    req.session.customSessionFilters = filters;

    console.log('PROVA NUOVO SERVICE -> setSessionFilters');
    console.log(req.session);

    res.json({status: 'ok', data: req.session.customSessionFilters});
});

并获取数据

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

    console.log('***********');
    console.log(req.session);

    if(req.session.customSessionFilters) {
        console.log('PROVA NUOVO SERVICE -> getSessionFilters');
        console.log(req.session.customSessionFilters);

        res.json({status: 'filters', data: req.session.customSessionFilters});
    }
    else {
        console.log('PROVA NUOVO SERVICE -> no filters');

        res.json({status: 'no_filters'});
    }
});

我希望找到req.session.customSessionFilters来填充我在表的搜索表单中设置的参数。我知道数据已传递到“设置会话数据”,因为我可以在console.log中看到它们,但是当我到达“获取会话数据”时,它们就消失了。 有帮助吗?

编辑: router.post(customSessionFilters / setSessionFilters)的输出(UserMaintenanceCenterCode和DealerList是我已经在登录中的会话中添加的变量; customSessionFilters是我在函数中添加的内容)

Session {
    cookie:
    { path: '/',
        _expires: null,
        originalMaxAge: null,
        httpOnly: true },
    passport: { user: 90 },
    UserMaintenanceCenterCode: [ 1 ],
    dealerList: [ 13 ],
    customSessionFilters: { year: 2018, Code: 'CC010', Dealer: 13 } 
}

router.get(customSessionFilters / getSessionFilters)的输出相同,但没有customSessionFilters。

未显示$ http.post(apihost +'/ customSessionFilters / setSessionFilters')的输出,但只会在连接的函数中打印customSessionFilters。

$ http.get(apihost +'/ customSessionFilters / getSessionFilters')的输出始终显示“ no_filters”(未定义customSessionFilters时函数的响应)

0 个答案:

没有答案