このコードは、認証されていないユーザーからページを保護するのに十分なルート内に配置されていますか?passportjs認証ユーザーのみが保護されたページにアクセスすることを許可する
if (!req.user) return res.send(401, "Not allowed in");
このコードは、認証されていないユーザーからページを保護するのに十分なルート内に配置されていますか?passportjs認証ユーザーのみが保護されたページにアクセスすることを許可する
if (!req.user) return res.send(401, "Not allowed in");
req.isAuthenticated()
を使用して、要求が認証されているかどうかを確認できます。
function ensureAuthenticated(req, res, next) {
if (req.isAuthenticated()) { return next(); }
res.redirect('/login')
}
app.get('/server', ensureAuthenticated, routes.server.get);
app.get('/login', routes.login.get);
またはこの
app.all('*', function(req,res,next){
if (req.params === '/' || req.params === '/login')
next();
else
ensureAuthenticated(req,res,next);
});
経路をどこかに漏らしていない限り、十分です。あなたのルートが正しい順序であることを確認してください。
//checks to be sure users are authenticated
app.all("*", function(req, res, next){
if (!req.user)
res.send(403);
else
next();
});
//additional routes will require authentication due to the order of middleware
app.get("/admin", ....
ただし、管理ルートをグローバルルートの上に移動した場合、管理ルートは保護されなくなります。ログインページを事前に意図的に配置して、認証などの必要がないようにすることもできます。
user568109の答えのための補正のような、急行4とのコードは次のようにする必要があります
app.all('*', function(req,res,next) {
if (req.path === '/' || req.path === '/login')
next();
else
ensureAuthenticated(req,res,next);
});
キリスト、神に感謝し 'にisAuthenticated()'です* *完全に文書化されていない**。それは図書館全体のポイントのようです。ある日、私はこのジャレッド・ハンソンの男を見つけて、彼の家に大きなゴムの手を持った無人機を送り、パスポートで世界を回ってくれることを繰り返すだけです。ありがとう。 –
アーメン!仲間heheに右! @JasonC –