2015-10-13 71 views
0

我看到在http://passportjs.org/docs示例代碼,我們可以通過第三個參數用於護照的做功能如何在passport.js中處理函數「done」的thrid參數?

代碼:

var passport = require('passport') 
    , LocalStrategy = require('passport-local').Strategy; 

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); 
    }); 
    } 
)); 

在這種情況下,他們是路過{消息:「不正確的用戶名。」 }。

我的問題是如何處理這個第三個參數。

編輯: 這是我的路由代碼:

app.post('/login', 
    passport.authenticate('local', { failureRedirect: '/login' }), 
    function(req, res) { 
    res.redirect('/'); 
    }); 

我想知道如何使用,從護照送樣

res.render('myjade', {'message': **THAT MESSAGE**}) 

像這樣

+0

如何處理它在哪些方面? – Flimzy

回答

0

從文檔信息:

重定向通常與閃光消息組合以便向用戶顯示狀態信息。

將failureFlash選項設置爲true將指示Passport使用策略的驗證回調給出的消息(如果有的話)刷新錯誤消息。

注意:使用Flash消息需要req.flash()函數。 Express 2.x提供了此功能,但它已從Express 3.x中刪除。建議使用連接閃存中間件在使用Express 3.x時提供此功能。

所以修改您的通話進行身份驗證是:

passport.authenticate('local', { 
    failureRedirect: '/login', 
    failureFlash: true 
}), 

,然後要麼使用connect-flash中間件或定義自己的中間件來提供req.flash()功能。