MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Facebook-Pass mit JWT

Die beste Lösung, die ich für dieses Problem gefunden habe, wäre die Umleitung auf die erwartete Seite mit einem Cookie, das das JWT enthält.

Verwenden von res.json würde nur eine json-Antwort senden und nicht umleiten. Aus diesem Grund würde die andere vorgeschlagene Antwort hier das Problem nicht lösen, auf das ich gestoßen bin.

Meine Lösung wäre also:

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

Nach der Umleitung können Sie das Cookie sicher lesen und dieses JWT wie erwartet verwenden. (Sie können das Cookie tatsächlich bei jedem Seitenaufruf lesen, um zu überprüfen, ob ein Benutzer angemeldet ist)

Wie ich bereits erwähnt habe, ist es möglich, mit dem JWT als Abfrageparameter umzuleiten, aber es ist sehr unsicher. Die Verwendung eines Cookies ist sicherer, und es gibt immer noch Sicherheitslösungen, die Sie verwenden können, um es noch sicherer zu machen, im Gegensatz zu einem Abfrageparameter, der es ist einfach unsicher.