如何在express中引入session呢?经过调研,发现使用mongodb+session方案,具体参考如下:
- session
-
connect-mongo
但是跨域(cors)会引起session丢失,这个后面再讲。
步骤如下:
-
在app.js头部引入引用
var session = require('express-session'); var MongoStore = require('connect-mongo')(session);
-
因为想要做成解耦的,所以把session的配置抽出去,放在一个文件中,因为有动态的东西,所以做成函数了。
var settings = require('./utils/settings'); app.use(session(settings.session(MongoStore))); > ./utils/settings.js module.exports = { mysql: { host: '127.0.0.1', port: 3306, user: '****', password: '****', database: '****', charset: 'utf8' }, session: function(MongoStore){ return { resave:false,//添加这行,重新保存:强制会话保存即使是未修改的; saveUninitialized: true,//添加这行 ,强制“未初始化的”会话保存到存储 key: "session~",//cookie name cookie: { path: '/', httpOnly: true, secure: false, // TODO: Set to true when HTTPS was used. maxAge: 1000 * 60 * 60 * 24 * 30 }, secret: "****", store: new MongoStore({ db: "****" }) } } };
-
用户登录,session验证,自定义一个中间件,然后引入。
module.exports = function (req, res, next) { if (req.url == '/login/login') { next(); } else { if (req.session.isLogined) { next(); } else { res.json("Hasn't login!"); } } }; app.use(require("./utils/sessionchk"));