NodeJS& Express身份验证中间件无法正常运行

时间:2017-07-05 16:57:15

标签: javascript node.js express authentication saml

我试图通过在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.jsauthenticate = require('./routes/authenticate')需要使用此身份验证功能。

问题:无论app.use(authenticate.isUserAuthenticated)语句的变体如何验证主题cookie是否存在于请求中,都不会触发身份验证检查并重定向到IDP身份验证路由也没有被重定向。上面代码中的if检查正在返回:

console.log,和 undefined

当我手动使用{}功能时,身份验证正在单一路线上运行:isUserAuthenticated,但我正在尝试全局使用此功能,所以我不会必须在每条路线上手动合并此中间件。

非常感谢任何建议/意见。谢谢。

2 个答案:

答案 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");

})

这将处理所有请求,然后再将它们转发到路由。