MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Passaporte do Facebook com JWT


A melhor solução que encontrei para esse problema seria redirecionar para a página esperada com um cookie que contém o JWT.

Usando res.json enviaria apenas uma resposta json e não redirecionaria. É por isso que a outra resposta sugerida aqui não resolveria o problema que encontrei.

Então minha solução seria:
app.get('/auth/facebook/callback',
passport.authenticate('facebook', {
    session: false,
    successRedirect : '/',
    failureRedirect : '/'
}), (req, res) => {
    var token = req.user.jwtoken;
    res.cookie('auth', token); // Choose whatever name you'd like for that cookie, 
    res.redirect('http://localhost:3000'); // OR whatever page you want to redirect to with that cookie
});

Após o redirecionamento, você pode ler o cookie com segurança e usar esse JWT conforme o esperado. (você pode realmente ler o cookie em cada carregamento de página, para verificar se um usuário está logado)

Como mencionei anteriormente, é possível redirecionar com o JWT como parâmetro de consulta, mas é muito inseguro. Usar um cookie é mais seguro, e ainda existem soluções de segurança que você pode usar para torná-lo ainda mais seguro, ao contrário de um parâmetro de consulta que é claramente inseguro.