2014-10-27 25 views
1

嗨我試圖做本地登錄使用passport.Everything運作良好,但我希望能夠顯示用戶名一旦用戶身份驗證這裏是我的代碼使用Node.js和mysql:如何使用護照發送json響應給broswe

passport.use(new LocalStrategy({ 
     usernameField: 'email', 
     passwordField: 'password', 
     passReqToCallback: true // allows us to pass back the entire request to the callback 
    }, 
    function(req, email, password, done) { 
     var status = []; 
     console.log('-----'); 

     connection.query('SELECT username FROM user WHERE email ="' + email + '"', function(err, rows) { 

      if (err) 
       return done(err); 
      if (rows.length) { 
       status.push({ 
        username: rows[0].username 
       }); 
       done(null, JSON.stringify(status)); //output as JSON 

       //console.log(JSON.stringify(status)); 


       //res.render ('"status":'+JSON.stringify(status)); 
      } 
     }); 

    } 
)); 

app.post('/login', passport.authenticate('local', { 
    successRedirect: '/loginSuccess', 
    failureRedirect: '/loginFailure', 
    failureFlash: false 
})); 

app.get('/loginFailure', function(req, res, next) { 
    res.send('Failed to authenticate'); 
}); 

app.get('/loginSuccess', function(req, res, next) { 
    res.send('Successfully authenticated'); 
}); 

回答

1

假設您的身份驗證工作正常,Passport使用的用戶數據將存儲在每個請求的req.user變量中。將req.user變量傳遞給您的視圖將爲您提供用戶信息。

另請參閱護照使用的serializeUser()和deserializeUser()函數。您不會在代碼中顯示它們,但爲了讓會話正常工作,護照需要它們。基本上,您的LocalStrategy認證用戶,serializeUser()函數準備會話數據,deserializeUser()函數讀取會話數據並創建req.user變量。

+0

這是正確的答案。 – rdegges 2014-10-28 17:42:10