Passport和Passport Local req.isAuthenticated始终返回false

时间:2014-02-23 02:02:12

标签: access-token passport.js

我无法对此进行跟踪,但对于我的设置,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在该样板项目中正常工作(目前它没有)。

2 个答案:

答案 0 :(得分:8)

我猜你忘了把req.login(...)放在passport.authenticate('local', function(...){})里面。

See here (at the end of the page)

答案 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的核心想要提出更好的方法,我当然喜欢重构我的代码以使其成为惯用语;如果没有,这种方法似乎有效。