[英]exporting/using express-session in another file
在其他文件中使用快速會話的最佳/常見方法是什么? 我無法將會話集成到我的代碼中。 我正在使用身份驗證令牌,但我想改用會話。 我在server.js
定義了會話:
const express = require('express');
var session = require('express-session');
var cookieParser = require('cookie-parser');
var app = express();
app.use(cookieParser('secret'));
app.use(session({
key: 'user_sid',
secret: 'secret',
resave: false,
saveUninitialized: false,
cookie: {
expires: 600000
}
}));
// stuff
module.exports = {app, session};
而且效果很好! 但是當我嘗試在userController.js
使用它時:
var express = require('express');
var {session} = require('./../server');
module.exports.login = (req, res) => {
var body = _.pick(req.body, ['email', 'password']);
User.findByEmailAndPassword(body.email, body.password).then((user) => {
// console.log(req.session); // is undefined
res.render('dashboard.hbs');
}).catch((e) => {
res.status(400).send();
});
}
然后req.session
是undefined
。 很明顯,我知道我在做什么,但是正確的方法是什么?
謝謝!
我認為您根本不需要導出session
,因為您告訴app
在server.js
使用它。
因此,正在工作的小提琴應如下所示:
const express = require('express'); var session = require('express-session'); var cookieParser = require('cookie-parser'); var app = express(); app.use(cookieParser('secret')); app.use(session({ key: 'user_sid', secret: 'secret', resave: false, saveUninitialized: false, cookie: { expires: 600000 } })); // stuff module.exports = app;
和您的控制器:
module.exports.login = (req, res) => { var body = _.pick(req.body, ['email', 'password']); User.findByEmailAndPassword(body.email, body.password).then((user) => { // console.log(req.session); // is undefined res.render('dashboard.hbs'); }).catch((e) => { res.status(400).send(); }); }
我正在考慮您要將此導出的登錄功能用於一條路線,例如
app.use('/login', require('yourCtrl.js').login);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.