我是Node JS的新手。我用快递和护照使用它。我也在跟踪数据库中的当前用户。
目标是让他们无法访问其他数据。如果他们尝试访问其他数据,他们将被重定向到正确的数据页面,并会收到来自connect-flash的消息提示。
以下是代码:
app.get('/data/:dataPlace', isLoggedIn, function(req, res) {
if (req.user.dataPlace == req.params.dataPlace) {
res.render('data.ejs', {
user : req.user,
message: req.flash('dataDisplayMessage')
});
}
else {
req.flash('dataDisplayMessage', 'OOOPS!');
res.redirect('/data/' + req.user.dataPlace);
}
});
大部分时间都可以使用(即使使用chrome预取数据):
GET /data/asdasd 302 1.049 ms - 86
GET /data/user 200 1.129 ms - 1639
然而,在极少数情况下,我会得到这样的结果:
GET /data/asdasd 302 1.108 ms - 86
GET /data/asdasd 302 1.989 ms - 86
GET /data/user 200 2.769 ms - 1646
第一个GET请求是由chrome预取数据引起的。除了它,而不是立即重定向到用户'和前一次一样,它一直挂起,直到我按下回车键,这会导致另一个GET请求“asdasd'然后它重定向到用户'。
答案 0 :(得分:0)
这似乎是Chrome问题。我的临时解决方案是接受第一条错误消息。这只是 特殊情况,因为我在给定时间只向用户显示一条错误消息。 如果您要显示多条错误消息,这将不太理想,因为Flash会在检索后删除所有消息
代码在ejs文件中被修改:
<% if (error.length > 0) { %>
<div class="alert alert-danger" role="alert">
<%= error[0] %>
</div>
<% } %>