关于req.session 替换 req.flash
发布于 11 年前 作者 leon0615 18388 次浏览 最后一次编辑是 8 年前

新版本的express取消了req.flash,建议直接使用req.session (just use sessions: req.session.messages = [‘foo’] etc)

按照之前req.flash的介绍:通过它保存的变量生命周期是用户当前和下一次请求,之后会被清除。 如果所有仅需要request作用域使用的变量全部都存放在req.session,那么每次用完岂不是还要不停得手工将req.session中没用的变量置为null???

9 回复

req.flash的原理就是這樣啊, 存儲在session裏面。取出一次之後就刪掉它。 如果不想手動實現也可以用npm install connect-flash模塊啊。

嗯,感谢,已经安装了connect-flash模块。

@leon0615 嘿嘿 沒事 我昨天也在糾結這個問題呢。

请问在ejs模板中如何获得session啊?貌似在ejs中无法直接操作session的。

将session的内容,存放到app.locals。

将session的内容,存放到app.locals。或者req.locals。

app.locals=req.locals 将变量同步到views

@sunuxreg session一般会保存登陆用户(作为用户登陆的判断),如果ejs需要获取session中某个object或变量,通过在后端请求路径发出之后,将session的变量读出来,render到ejs页面上就行了。

app.get('/sessionDemo', function(req, res, next){
	var loginUser = req.session['loginUser'];
	res.render('index', {title: 'Session Demo', loginUser: loginUser});
});

这个问题我没研究过,有一个关于 connect-flash 简单的例子可以实现connect-falsh 信息提示,但就不知道跟楼主的问题有没有关系 connect-flash 用法详解

试试自己写个connect-flash中间件 出来

回到顶部