使用 Passport.js 登录后如何通过 React 进行“重定向”?

Bri*_*ian 5 express reactjs passport.js

新手反应问题:我\xe2\x80\x99m 将其与passport.js 和express 一起使用。I\xe2\x80\x99m 成功登录应用程序。但我不知道如何进行重定向。

\n\n
router.post('/login',\n  passport.authenticate('local'),\n  function(req, res) {\n    // If this function gets called, authentication was successful.\n    res.redirect('/upload'); //<\xe2\x80\x94\xe2\x80\x94 what I\xe2\x80\x99d like to do is some kind of redirect here\n});\n
Run Code Online (Sandbox Code Playgroud)\n\n

任何帮助表示赞赏。

\n

Luz*_*ral 2

在您的回调路线上执行此操作。

router.get('/facebook', passport.authenticate('facebook', { scope: ['public_profile', 'email'] }));

router.get('/facebook/callback',
    passport.authenticate('facebook', { failureRedirect: "/" }), function (req, res) {
        if (req.user || req.session.user)
            return res.redirect('/' + req.user._id || req.session.user._id);
        return res.redirect('/login');
    });
Run Code Online (Sandbox Code Playgroud)

在这里,我使用的passport.js是Facebook登录。在/facebook/callback我已重定向到/login并且在/login我有一个函数来检查会话是否已设置。

if (Helper.isLoggedIn(req)) {
    res.redirect('/');
    return;
}
Run Code Online (Sandbox Code Playgroud)

isLoggedIn内部的定义Helper.js

function isLoggedIn(req) {
    if (req.session && req.session.user_email && req.session.user_email != null) {
        if (!req.user || req.session.user == undefined || req.session.user == null) {
            loadUserFrom(req);
        }
        return true;
    }
    return false;
}
Run Code Online (Sandbox Code Playgroud)