【发布时间】:2021-03-24 01:38:53
【问题描述】:
我是 Web 开发的新手,正在为 Node.js 应用程序使用 Passport.js 设置用户身份验证。除了我试图在登录表单上加载的图像之外,有关用户身份验证的所有内容都运行良好。我知道图像加载失败与我的中间件功能有关,因为当我通过注释掉该行来删除中间件功能时:
app.use(checkAuthenticated);,图片加载正确,一切正常。这是我的中间件功能:
function checkAuthenticated(req, res, next) {
if (req.isAuthenticated() || req.path.includes('login')) {
return next()
}
res.redirect('/login')
return;
}
我还假设使用 Passport.js 检查身份验证的这种类型的中间件函数会很常见,因此我将不胜感激任何关于如何为此类中间件函数做的最佳事情的反馈。我觉得我的实现有点不合适,“or path.includes('login')”有点不雅,但这是我能想到的唯一让函数工作的东西,而不会陷入无限循环(因为在第一次访问时,用户不会通过身份验证,并且每次重定向都会继续被重定向)。感谢您提供的任何帮助,如果有什么可以澄清的,请告诉我。
编辑: 如果有任何帮助,我还想补充一下,如何提供登录文件,以及如何将图像加载到登录文件中。对于提供登录文件的命令,我有:
app.get('/login', function(req, res) {
res.sendFile(path.join(__dirname, 'public', 'login-page.html'));
});
对于登录文件的图像链接,我只有经典的:
<img src="path to the image">
【问题讨论】:
标签: node.js express passport.js middleware