【发布时间】:2017-11-27 14:41:34
【问题描述】:
我设置了一个应用程序,其中包含一个注册主页和一些需要登录的内部页面。 我使用 Node 和 Express.js 来设置服务器并控制路由和身份验证工作正常:如果我尝试访问 localhost:port/clientPage 如果我以前登录过,我会得到所需的页面,否则会出现错误消息。
问题是,如果我尝试访问 localhost:port/clientPage.html,即使我没有活动会话,我也会得到 clientPage。在这种情况下,我如何确保之前描述的相同 - 期望 - 行为?我将 GET 路由的代码附加到 clientPage:
router.get('/clientPage', function (req, res, next) {
User.findById(req.session.userId)
.exec(function (error, user) {
if (error) {
return next(error);
} else {
if (user === null) {
var err = new Error('Not authorized! Go back!');
err.status = 400;
return next(err);
} else {
return res.sendFile(path.join(__dirname + '/../views/clientPage.html'));
}
}
});
});
【问题讨论】:
-
尝试 router.get('/clientPage*', 在第一行。希望这会有所帮助。
-
您是否使用过任何一种
express.static(path.join(__dirname, "public")来为您的views提供服务? -
哦。是的,我在这一点上同意 Zanko。
-
@Zanko 是的,在 app.js 中 {app.use(express.static(__dirname + '/views'));} 我现在明白这是问题所在 - 这似乎很愚蠢一,但如果你想提供一个答案,我会接受它 - 但为什么这会覆盖所有显示 html 文件的指定路由?
-
index.html 也可以进入 /views
标签: node.js express authentication