我也有类似的问题。如果你看看
isAuthenticated()
是的,它实际上只是检查
request.session
反对。
https://github.com/jaredhanson/passport/blob/2327a36e7c005ccc7134ad157b2f258b57aa0912/lib/http/request.js#L86
req.isAuthenticated = function() {
var property = 'user';
if (this._passport && this._passport.instance) {
property = this._passport.instance._userProperty || 'user';
}
return (this[property]) ? true : false;
};
我不确定它是passport还是express会话,但是一旦您进入身份验证方法,用户对象将存储在
request.session.passport.user
所以如果您愿意,可以直接验证它是否为非空,而不是使用
已验证()
方法,它似乎检查了错误的路径。
我的代码在更改为以下代码后开始工作。
if (_.get(req, 'session.passport.user', null)) {
return next();
}
(洛达斯
_.get
为了更容易地检查嵌套属性的空值)