我想用我的express-ejs模板,用jwt做一个认证系统。我创建了一个cookie,我在cookie部分看到它,我把它发送到前端。当cookie存在时,我可以成功地在屏幕上写它,但出于测试的原因,为了看看当用户离线时会发生什么,我删除了cookie,我得到了引用错误。
我尝试有条件地将用户数据写成这样:
<% if (!user) { %>
<h2> Hello Guest! </h2>
<% } else { %>
<h2> Hello <%= user.username %></h2>
<% } %>
但是我在第一行得到了这个错误。我什么都不明白,我已经试着检查它是否未定义,但是把我检查的错误。我把那个cookie的“HTTPOnly”属性设置为“true”,我不知道是不是因为这个。当那个cookie存在时,ejs呈现那个cookie的信息,但是当它不存在时,它不检查它是否未定义。
我发送用户到前端与此代码:
enter image description here
server.get("/", function(req, res, next){
if(!req.headers.cookie){
res.render("home")
} else{
console.log("headers:", req.headers.cookie.split("=")[1]);
console.log("jwt decoding:", jwt.decode(req.headers.cookie.split("=")[1]))
let user = jwt.decode(req.headers.cookie.split("=")[1])
res.render("home", { user });
}
});
2条答案
按热度按时间pb3skfrl1#
您仍然需要将变量传递给视图,但将其保留为空:
oug3syen2#
您似乎没有将名为“user”的变量传递给EJS模板。
你可以检查变量是否存在,如下所示: