Tüm sayfalarımı yüklemeden önce authenticateUser() aracı kullanıyorum. Her bir aramaya dahil etmek yerine (app.get ('/', authenticateUser, function() ...)) gibi, app.use (authenticateUser) ile app.use (app.router) çağırmadan hemen önce ayarlamayı denedim.). Bununla birlikte, bu, işe yaramadı.Node.js - middleware'de res.redirect ile sorun var
if (req.session.loginFailed) {
next()
else {
if (req.session.user_id) {
...
if (userAuthenticated) {
next();
} else {
req.session.loginFailed = true;
console.log('setting loginFailed to true');
res.redirect('/login');
}
}
}
Sonra app.get ('/ login') I yanlış olduğu req.session.loginFailed set;: authenticateUser temelde
Bu işe yaramalı, ancak yalnızca benim gerçek sayfalarından biri için bir app.get() veya app.post() vb. Birçok farklı istek için defalarca çağrıldığını düşünüyorum (çünkü bir sayfa yüklendikten sonra 'loginFailed değerini true' olarak adlandırmak pek çok kez çağrılır)
Bunu yapmanın daha iyi bir yolu var mı? Yoksa sitemdeki her sayfadan önce onu çağırmalı mıyım?
Yeterince adil, komik çünkü aslında nodepad öğreticilerden çalışıyordum. İşin aslı, sitemde oturum açmış olmanızın gerekmesidir, bu yüzden tüm rotalara manuel olarak eklememenin bir yolunu bir araya getirdim, ama eğer uygun bir yol varsa onu ekleyeceğim. –
@alessioalex ile katılıyorum. Ancak, ortaya koyduğunuz yaklaşımda ısrar ederseniz, "app.use (authenticateUser)" öğenizin oturum ara katmanından SONRA olduğundan emin olun. – danmactough