我最近已切换到Cognito以在我的网站上进行身份验证。我正在使用NodeJS / Express运行服务器。每个API调用在声明和主函数之间都有一个回调,以检查用户是否已通过验证currentAuthenticatedUser()
,这将为当前请求/会话返回一个认知用户对象。
我发现该功能在有人登录之前可以正常工作。如果我像往常一样登录,那么我的帐户便会获得身份验证,并且可以访问主页等。
但是,如果我向其他人发送网站链接,则他们会自动绕过登录,因为此函数返回了我的用户对象,而不是按请求或会话进行过滤并用not authenticated
进行回复。从某种意义上说,这似乎是一个太基本的问题,在某种意义上,放大功能将返回最后一个登录并进行身份验证的用户的用户对象,而不管来自其他任何新传入请求的身份验证状态。>
两个auth检查:
function checkAuthenticated(req, res, next) {
auth.currentAuthenticatedUser()
.then(user => {
console.log(user);
next();
})
.catch(err => {
console.log(err);
return res.redirect('/login');
});
}
function checkNotAuthenticated(req, res, next) {
auth.currentAuthenticatedUser()
.then(user => {
console.log(user);
return res.redirect('/');
})
.catch(err => {
console.log(err);
next();
});
}
API调用示例:
app.get('/', checkAuthenticated, (req, res) => {
res.render('index.ejs');
});
app.post('/login', checkNotAuthenticated, async (req, res, next) => {
// Some code to login
});
任何指导表示赞赏。