2017-01-21 66 views
0

我的快遞V4應用不會給我會話的正確值,而只是返回undefined。我的應用程序是使用快速生成器構建和構建的,這是我的app.js文件。我的快遞請求會話在Express v4中保存爲undefined

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對於安全cookie是必需的。如果設置了安全,並且您通過HTTP訪問您的站點,則不會設置Cookie。 – dNitro

+0

我認爲你應該使用cookie解析器模塊 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。在窗口加載時,它向該路由發送一個數字,然後我希望將該數字保存在會話「掩碼」中 –