2014-06-24 16 views
5

Sto provando questo git example.come inviare json come risposta dopo autenticazione passaporto in node.js

che funziona bene quando ho integrato con il mio progetto, ma quello che voglio ottenere è quello di inviare JSON come risposta al client/richiesta, invece di successRedirect: '/ profile' & failureRedirect: '/ iscrizione'.

È possibile inviare un json, o ci sono altri metodi per ottenere lo stesso?

Qualsiasi aiuto sarà apprezzato, TU

risposta

2

qui ho modificato il mio codice per inviare JSON come risposta

// process the signup form 
app.post('/signup', passport.authenticate('local-signup', { 
    successRedirect : '/successjson', // redirect to the secure profile section 
    failureRedirect : '/failurejson', // redirect back to the signup page if there is an error 
    failureFlash : true // allow flash messages 
})); 

app.get('/successjson', function(req, res) { 
    res.sendfile('public/index.htm'); 
}); 

app.get('/failurejson', function(req, res) { 
    res.json({ message: 'hello' }); 
}); 
4

Crea nuovo percorso, ad es .: /jsonSend con res.json in esso e fanno successRedirect: '/jsonSend'. Questo dovrebbe farlo.

+0

tsl uomo, mi permetta di provare questo – pitu

+0

ringraziamento @thyforhtian per aiutandola workd – pitu

+0

leggi la mia risposta qui sotto – pitu

1

Usa passaporto come middleware.

router.get('/auth/callback', passport.authenticate('facebook'), 
    function(req, res){ 
     if (req.user) { res.send(req.user); } 
     else { res.send(401); } 
    }); 
3

È possibile utilizzare la funzione di autenticazione del passaporto come middleware del percorso nell'applicazione Express.

app.post('/login', 
    passport.authenticate('local'), 
    function(req, res) { 
    // If this function gets called, authentication was successful. 
    // `req.user` contains the authenticated user. 
    // Then you can send your json as response. 
    res.json({message:"Success", username: req.user.username}); 
    }); 

Per impostazione predefinita, se l'autenticazione non riesce, Passaporto risponderà con uno stato non autorizzato 401, e non verrà invocato eventuali gestori di percorso aggiuntive. Se l'autenticazione ha esito positivo, verrà richiamato il gestore successivo e la proprietà verrà impostata sull'utente autenticato.

0
// process the signup form 
app.post('/signup', passport.authenticate('local-signup', { 
    successRedirect : '/successjson', // redirect to the secure profile section 
    failureRedirect : '/failurejson', // redirect back to the signup page if there is an error 
    failureFlash : true // allow flash messages 
})); 

app.get('/successjson', function(req, res) { 
    res.sendfile('public/index.htm'); 
}); 

app.get('/failurejson', function(req, res) { 
    res.json({ message: 'hello' }); 
}); 
2

C'è un funzionario personalizzata richiamata documentazione:

app.get('/login', function(req, res, next) { 
    passport.authenticate('local', function(err, user, info) { 
    if (err) { return next(err); } 
    if (!user) { return res.redirect('/login'); } 
    req.logIn(user, function(err) { 
     if (err) { return next(err); } 
     return res.redirect('/users/' + user.username); 
    }); 
    })(req, res, next); 
}); 

https://github.com/passport/www.passportjs.org/blob/master/views/docs/authenticate.md

Problemi correlati