向身份验证函数返回值似乎无法正常工作
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();
}
但是,不清楚您认为通过从中间件处理程序返回 true
或 false
来完成什么。您实际上想用 ensureAuthenticated
处理程序完成什么?
您可以查看中间件示例here in the Express doc。典型的中间件处理程序要么发送响应,要么调用 next()
将控制权向下传递给下一个处理程序。
我正在尝试使用 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();
}
但是,不清楚您认为通过从中间件处理程序返回 true
或 false
来完成什么。您实际上想用 ensureAuthenticated
处理程序完成什么?
您可以查看中间件示例here in the Express doc。典型的中间件处理程序要么发送响应,要么调用 next()
将控制权向下传递给下一个处理程序。