我试图通过在isUserAuthenticated
中使用&{39;使用'它如此:app.js
。
我有一个app.use(authenticate.isUserAuthenticated)
回调路由,由我们的SAML身份提供商发布,其中包含验证用户和会话所需的信息。这就是我/authenticate
文件中的内容:
authenticate.js
如上所述,module.exports = router;
module.exports.isUserAuthenticated = function(req, res, next) {
console.log(req.cookies.subject);
if (req.cookies.subject) {
console.log(req.cookies.subject)
return next();
} res.redirect("LINK TO IDP FOR VERIFICATION, callback func. is then ran to get value of user and session");
}
:app.js
和authenticate = require('./routes/authenticate')
需要使用此身份验证功能。
问题:无论app.use(authenticate.isUserAuthenticated)
语句的变体如何验证主题cookie是否存在于请求中,都不会触发身份验证检查并重定向到IDP身份验证路由也没有被重定向。上面代码中的if
检查正在返回:
console.log
,和
undefined
。
当我手动使用{}
功能时,身份验证正在单一路线上运行:isUserAuthenticated
,但我正在尝试全局使用此功能,所以我不会必须在每条路线上手动合并此中间件。
非常感谢任何建议/意见。谢谢。
答案 0 :(得分:1)
如果使用express js
,则需要在路由器对象上设置中间件router.use(isUserAuthenticated)
不要忘记将它放在路线文件的顶部。
查看应用级和路由器级中间件here
之间的区别答案 1 :(得分:1)
正如评论中所建议的那样,
您可以将isUserAuthenticated
功能移动到app.js.它看起来像这样
app.use(function(req, res, next) {
if (req.cookies.subject) {
next();
}
else
res.redirect("LINK TO IDP FOR VERIFICATION, callback func. is then ran to get value of user and session");
})
这将处理所有请求,然后再将它们转发到路由。