我无法对此进行跟踪,但对于我的设置,isAuthenticated
即使在成功登录后也始终返回false。这是护照代码:
req.isAuthenticated = function() {
var property = 'user';
if (this._passport && this._passport.instance._userProperty) {
property = this._passport.instance._userProperty;
}
return (this[property]) ? true : false;
};
但是快速浏览一下我并没有在本地策略的任何地方看到_userProperty
proeprty(对不起,如果我看起来不够努力),所以我想这可能就是为什么它总是返回false?
我会留下我的应用程序代码的代码示例,但我觉得在我正在进行的工作中快速查看repo可能更容易: passport api token sessionless
最终,我的目标是让logout在该样板项目中正常工作(目前它没有)。
答案 0 :(得分:8)
我猜你忘了把req.login(...)
放在passport.authenticate('local', function(...){})
里面。
答案 1 :(得分:2)
道歉,如果我的原始问题首先没有那么有用,但是......
我发现我的护照,本地护照和本地护照-mongoose的组合,只是在我的mongoose Schema上创建了一个失效方法(插入了passportLocalMongoose
“,并且当我的/logout
路线被击中时,我基本上删除了该用户的令牌。这是方法:
Account.statics.invalidateUserToken = function(email, cb) {
var self = this;
this.findOne({email: email}, function(err, usr) {
if(err || !usr) {
console.log('err');
}
usr.token = null;
usr.save(function(err, usr) {
if (err) {
cb(err, null);
} else {
cb(false, 'removed');
}
});
});
};
我认为在上下文中看到这个更有意思所以请再次参考有问题的回购...希望这有助于某人。
此外,如果来自其中一个提到的lib的核心想要提出更好的方法,我当然喜欢重构我的代码以使其成为惯用语;如果没有,这种方法似乎有效。