Express を使用して、node.js サーバーでパスポートローカル認証を設定しようとしています。それは非常に簡単であるように思われます。しかし、私は立ち往生しています。
これら 2 つのスニペットは一緒にうまく機能します。
app.get('/', ensureAuthenticated, function(req, res){
res.redirect('/index.html', { user: req.user });
});
app.post('/login',
passport.authenticate('local', { failureRedirect: '/login.html', failureFlash: true, successFlash: "Success!" }),
function(req, res) {
res.redirect('/');
});
問題は、アドレス バーに「www.myurl.com/index.html」と入力して、自分のページにドロップするのを妨げるものがないことです。
次のようなコードを使用する場合:
app.get('/index.html', ensureAuthenticated, function(req, res){
res.redirect('/index.html', { user: req.user });
});
ループに巻き込まれているようです...認証をチェックして、リダイレクトごとに永遠にチェックすることなく、途中で送ってくれたらいいのにと思います。これを回避する方法は何ですか?
ドキュメントでは、リダイレクトではなく .render が使用されているようです。しかし、これは私が.ejsを使用することを要求しているようで、私はそれをしたくありません。これは必須ですか?
++参照用++
function ensureAuthenticated(req, res, next) {
if (req.isAuthenticated()) { return next(); }
res.redirect('/login.html')
}