向身份验证函数返回值似乎无法正常工作

Returning value to authentication function doesn't seem to work properly

我正在尝试使用 req.isAuthenticated() 检查身份验证状态,然后 return ensureAuthenticated 是真还是假。我的问题是控制台中没有记录任何内容,似乎我的 ensureAuthenticated 函数 运行 不正确。

app.get('/', ensureAuthenticated, function (req, res) {

    if (ensureAuthenticated()) {
        console.log('logged in')
        } else {
        console.log('not logged')
    }

});



function ensureAuthenticated(req, res, next) {

    Authenticate();

    function Authenticate() {
        if (req.isAuthenticated()) {
            return true;
        } else {
            return false;
        }
    }

    return Authenticate;
}

您没有从 ensureAuthenticated 返回您的值。假设这里的所有内容都是同步的,那么你可以这样做:

function ensureAuthenticated(req, res, next) {

    function Authenticate() {
        if (req.isAuthenticated()) {
            return true;
        } else {
            return false;
        }
    }

    return Authenticate();
}

或者,您可以完全去掉内部函数:

function ensureAuthenticated(req, res, next) {
    return req.isAuthenticated();
}

但是,不清楚您认为通过从中间件处理程序返回 truefalse 来完成什么。您实际上想用 ensureAuthenticated 处理程序完成什么?

您可以查看中间件示例here in the Express doc。典型的中间件处理程序要么发送响应,要么调用 next() 将控制权向下传递给下一个处理程序。