2017-01-21 7 views
0

Приложение моего V4 не дает мне правильного значения сеансов, а просто возвращает undefined. Мое приложение было структурировано и построено с использованием экспресс-генератора, и это мой файл app.js.Мои экспресс-ответы сохраняются как неопределенные в Express v4

var express = require('express'), 
path = require('path'), 
bodyParser = require('body-parser'), 
routes = require('./routes/index'), 
app = express(), 
compression = require('compression'), 
session = require('express-session'); 

// view engine setup 
app.set('views', path.join(__dirname, 'views')); 
app.set('view engine', 'ejs'); 
app.set('view cache', true); 

app.enable('trust proxy'); 

app.use(session({ 
    secret: "Share3na Network!195", 
    resave: true, 
    saveUninitialized: true, 
    cookie: { secure: true, httpOnly: true } 
})); 
app.use(bodyParser.json()); 
app.use(bodyParser.urlencoded({ extended: false })); 
app.use(compression()); 
app.use(express.static(path.join(__dirname, 'public'))); 
app.use('/', routes); 

И эти маршруты берут значение сеанса и отправляют его обратно.

router.get('/getmask', function(req,res){ 
    res.send(req.session.mask); 
}); 

//GET the mask during event body load 
router.get('/sendmask', function(req,res){ 
    req.session.mask = striptags(emojiStrip(req.query.m)); 
}); 

В другом маршруте, когда я добавить IP-адрес на запросы со значением сеанса: req.ip() + req.session.mask, что получает сохраненный в базе данных „123.456.789undefined“

+1

Хотя рекомендуется использовать «secure: true», для него требуется веб-сайт с поддержкой https, т. Е. HTTPS необходим для безопасного куки-файла. Если безопасно установлено, и вы получаете доступ к своему сайту через HTTP, cookie не будет установлен. – dNitro

+0

Я думаю, вы должны использовать модуль cookie-parser https://github.com/expressjs/cookie-parser –

+1

@ dNitro Я знаю, мое веб-приложение уже на HTTPS –

ответ

0

Вы должны сохранить значение сессии после модификации , Документацию по этому же можно увидеть в the README пакета.

//GET the mask during event body load 
router.get('/sendmask', function(req,res){ 
    req.session.mask = striptags(emojiStrip(req.query.m)); 
    req.session.save(); 
}); 
+0

Несчастливо он не работает. Все еще не определено. Любые другие трюки, которые я могу сделать? –

+0

@TonyLee Как вы обращаетесь к пути '/ sendmask'? – hjpotter92

+0

Через AJAX. При загрузке окна он отправляет номер на этот маршрут, а затем я хочу, чтобы этот номер сохранялся в сеансе «mask» –