我正在尝试理解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条件。
答案 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;
};