2014-10-04 36 views
1

在我剛開始我的頭一輪PassportNode哪裏了var用戶來自Passport文檔

passport.use(new LocalStrategy(
    function(username, password, done) { 
    User.findOne({ username: username }, function (err, user) { 
     if (err) { return done(err); } 
     if (!user) { 
     return done(null, false, { message: 'Incorrect username.' }); 
     } 
     if (!user.validPassword(password)) { 
     return done(null, false, { message: 'Incorrect password.' }); 
     } 
     return done(null, user); 
    }); 
    } 
)); 

這是所有偉大的,我理解的邏輯。但是我不明白變量User

User.findOne({ username:.... 

是從哪裏來的?這不是在任何地方設置,讓我感到困惑。

+0

不知道庫,只是指出Node.JS有一個'全局'全局對象,被視爲[root](http://stackoverflow.com/questions/21578446/what-is-the-root- object-in-node-js)對象。一些圖書館喜歡打破模塊範例和約定(可以說是被廣泛接受),爲了讓所有的腳本都可以訪問這些'global'或'root'對象,添加一些東西,不管是否他們已經要求包含腳本。 – Qix 2014-10-04 21:33:30

回答

2

該示例使用在其他地方定義的mongoose modelUser)。貓鼬型號有findOne function。它的目的主要是填充以展示如何使用該策略在db中查找信息以驗證用戶身份。

+0

arghhh ...良好的主人:)學習使用Node和諸如護照之類的東西讓我想起使用Facebook的api時,它首次出來,或phonegap。事實上,只是任何文件記錄不佳:) – 2014-10-04 21:25:36

+2

是的,使用特定的數據庫或實現的整個假設是有點煩人,你會發現在很多例子中。儘管如此,有些人做得更好。也許開放一個問題,爲passport.js更新,以幫助其他人避免混亂:) – Lbatson 2014-10-04 21:28:13

+1

葉,我同意。無論哪種方式非常有幫助。直到那個時候,人們纔會在這裏找到 – 2014-10-05 21:05:41