ZMa*_*lin 8 session node.js express
我正在使用session(使用express和nodes)创建一个登录模块.当用户登录时,我将用户保存在会话中.
req.session.user= ...
Run Code Online (Sandbox Code Playgroud)
如何在.ejs视图中获取会话值,如:
<label>
???<%= req.session.user.username %>
</label>
Run Code Online (Sandbox Code Playgroud)
但这不起作用.
我可以这样做:
router.get('/home',function(req, res){
var val = req.session.user;
res.render('home',{user:val});
});
Run Code Online (Sandbox Code Playgroud)
.ejs:
<p>
???<%= user.username %>
</p>
Run Code Online (Sandbox Code Playgroud)
但这太麻烦了.有什么更好的方法呢?
(在php中,我可以使用$ _SESSION来获取视图文件中的值.)
rob*_*lep 20
您可以使用res.locals将特定数据公开给所有模板.
在您的情况下,您可以将以下中间件添加到Express:
app.use(function(req, res, next) {
res.locals.user = req.session.user;
next();
});
Run Code Online (Sandbox Code Playgroud)
这将使user所有模板中都有一个变量.
您确实需要确保在设置之后 添加该中间件req.session(通常在express-session添加到中间件链之后).
| 归档时间: |
|
| 查看次数: |
10643 次 |
| 最近记录: |