2014-02-23 60 views
6

我還沒有能夠跟蹤到這一點,但對於我的設置,即使成功登錄後,isAuthenticated始終返回false。這裏的護照代碼:護照和護照本地req.isAuthenticated總是返回假

req.isAuthenticated = function() { 
    var property = 'user'; 
    if (this._passport && this._passport.instance._userProperty) { 
    property = this._passport.instance._userProperty; 
    } 

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

但在一個快速環顧四周我沒有看到_userProperty媒體資源相關聯的任何地方在本地策略(抱歉,如果我沒有看夠硬),所以我想這可能是爲什麼它總是返回錯誤?

我會離開我的應用程序代碼的代碼示例,但我覺得它可能更容易有一個快速瀏覽一下回購對我的工作正在進行中: passport api token sessionless

最終,我的目標是有註銷爲該樣板工程正常工作(目前它沒有)。

回答

2

道歉,如果我原來的問題不是擺在首位的是有用的,但是......

我發現我的護照,護照的地方,和護照本地貓鼬的組合,一個解決方案是簡單地我的貓鼬架構創建一個無效的方法(具有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'); 
      } 
     }); 
    }); 
}; 

我相信它更有趣的,看看這在上下文中再次請隨意參考上市問題的回購...希望這個他lps某人。另外,如果前面提到的庫中的一個核心想要提出更好的方法,我當然會喜歡重構我的代碼以使其更具地道性;如果不是,這種方法似乎工作。

8

我想你忘了把:req.login(...)裏面passport.authenticate('local', function(...){})

See here (at the end of the page)

+0

完美!謝謝:) – Sohail

+0

給出的鏈接沒有提到關於調用login()的內容。 「注意:passport.authenticate()中間件自動調用req.login()函數,該函數主要用於用戶註冊時,在此期間可以調用req.login()來自動登錄新註冊的用戶「。 – Epirocks