2017-12-14 20 views
0

I以下のミドルウェア機能を持っている:なぜ(パスポート)app.getとミドルウェア機能の火が、app.postない

これは、次のGETルートでうまく動作します
function isLoggedIn(req, res, next) { 

    if (req.isAuthenticated()) { 
    console.log('***User is logged in***'); 
    next(); 
    } else { 

    res.redirect('/'); 
    console.log('***User IS NOT logged in***'); 
    } 
} 

app.get('/profile', isLoggedIn, function(req, res) { 
    res.render('profile.ejs', { 
     user: req.user // get the user out of session and pass to template 
    }); 
    }); 

app.post('/add', isLoggedIn, function(req, res) { 
    console.log('Success'); 
    }); 

なぜ:私はPOSTルートにisLoggedIn機能をプラグインしようとすると、

はしかし、それは発生しません私の関数はapp.postで機能しませんが、app.getで起動します。

答えて

0

jQueryやAxiosのような約束のライブラリを使ってURLに投稿している場合、res.redirectはブラウザが表示されているページを変更しません。この場合、あなたのポストのレスポンスを処理してステータスコード302(デフォルトのステータスコードがExpressesリダイレクトに返されます)が得られ、ページを必要な場所(フロントエンド)にリダイレクトする必要があります。

+0

コードのres.redirect部分に到達することさえできず、関数はPOSTリクエストではまったく起動しません。 app.postを上記のルート(/ add)のapp.getに変更することができ、isLoggedIn関数が起動します(コンソールにメッセージが表示されます)。 .postに戻すと、関数はもはや起動しません。 – mthelm85

関連する問題