试图理解Node JS路由代码

时间:2017-04-09 18:33:44

标签: node.js express

我正在尝试理解one开源实现以实现基于SAML的SSO,而我无法理解来自this类的以下快速路由器方法:

router.get('/', function(req, res, next) {
  console.log(arguments);
    if(req.isAuthenticated()){
        res.render('index', {
            title: 'sp1 - My Application',
            user: req.user
        });
    }else{
      console.log('not authentcated sending to authenticate');
        res.redirect('/login');
    }
});

我的问题是:

where exactly the code is setting `isAuthenticated` flag to true or false?

当我第一次启动/登录时,我发现它是假的,但当我从我的idp(身份提供者)获得重定向时,这个标志是真的,我进入if条件。

1 个答案:

答案 0 :(得分:1)

此方法确实来自passport身份验证系统

您可以检查功能本身here

/**
* Test if request is authenticated.
*
* @return {Boolean}
* @api public
*/
req.isAuthenticated = function() {
  var property = 'user';
  if (this._passport && this._passport.instance._userProperty) {
 property = this._passport.instance._userProperty;
}

 return (this[property]) ? true : false;
};