如何使用护照发送JSON响应给broswe

嗨我想做本地login使用passport.Everything运作良好,但是我想能够显示用户名一旦用户身份validation这里是我的代码使用Node.js和MySQL:

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

假设您的身份validation工作正常,则Passport使用的用户数据将存储在每个请求的req.uservariables中。 将req.uservariables传递给你的视图会给你的用户信息。

另请参阅护照使用的serializeUser()和deserializeUser()函数。 您不会在代码中显示它们,但是为了让会话正常工作,护照需要护照。 基本上,您的LocalStrategyauthentication用户,serializeUser()函数准备会话数据,deserializeUser()函数读取会话数据并创buildreq.uservariables。