AWS Amplify / Cognito:如何正确检查用户是否经过身份验证?

时间:2020-07-03 13:06:18

标签: javascript api express amazon-cognito aws-amplify

我最近已切换到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
});

任何指导表示赞赏。

0 个答案:

没有答案