我正在使用EJS和Express来检查当前用户是否存在,以及是否不显示其他内容。我的问题是我将req.user
设置为res.locals.currentUser
,但是它没有传递到模板,因此我可以输出它以及检查它是否存在。
在我的app.js中
app.use(function(req, res, next){
res.locals.currentUser = req.user;
next();
});
我的ejs文件
<% if(!currentUser){ %>
<li><a href="/login">Login</a></li>
<li><a href="/register">Sign Up</a></li>
<% } else { %>
<li><a href="#">Signed In As <%= currentUser.email %></a></li>
<li><a href="/profile">Profile</a></li>
<li><a href="/logout">Logout</a></li>
<% } %>
这总是计算为false,因此显示if语句的第一部分。
这里是什么问题,所以我无法在ejs视图中测试或查看用户数据?当我console.log时,currentUser
返回未定义。
一些可能很重要的信息,我使用的是Redis会话存储而不是mongo存储。我也使用body解析器,而不是cookieparser。
答案 0 :(得分:0)
在带有 ejs 模板的 node.js 中使用 Passport 时,我遇到了同样的问题。
解决方案是将其放在护照代码行下方(即序列化和反序列化)。 这些函数负责将用户保存到“req.user”,因此如果 app.use 放在它上面,代码将无法工作,因为 req.user 在此之前为 null。
阿迪斯