Node.js と Express を使用して、ログインしていないユーザーを常にメイン ページにリダイレクトさせたい。これを達成する最も簡単な方法は何ですか?理想的には、誰かがログインしているかどうかをチェックするコードをすべてのルートに追加する必要はありません。
2518 次
3 に答える
2
「ログインしていない」をどのように定義するかにもよりますが、状態が に格納されているとしますreq.session
。その場合、ログインしていないユーザーをログイン ページにリダイレクトするミドルウェアを追加できます。
app.use(function(req, res, next) {
if (req.path === '/loginpage') // pass requests for login page
next();
else
if (! req.session || req.session.isLoggedIn !== true) // check logged in status
res.redirect('/loginpage'); // redirect to login page when not logged in
else
next(); // else just pass the request along
});
app.get('/loginpage', function(req, res) {
res.send('login page');
});
于 2013-04-10T08:15:30.940 に答える
1
私はずっと前にノードで作業していますが、動作するはずです
function requireLogin(req, res, next) {
if (req.session.loggedIn) {
next(); // allow the next route to run
} else {
// require the user to log in
res.redirect("/"); // or render a form, etc.
}
}
// Automatically apply the `requireLogin` middleware to all
// routes starting with `/`
app.all("/*", requireLogin, function(req, res, next) {
next(); // if the middleware allowed us to get here,
// just move on to the next route handler
});
于 2013-04-10T08:12:02.000 に答える
1
パスポートのようなものを使用できます。これにより、許可されたルートの確認がはるかに簡単になります
function ensureAuthenticated(req, res, next) {
if (req.isAuthenticated()) { return next(); }
res.redirect('/login') //Or whatever your main page is
};
このようにルートを確認できるようになりました
app.get('/account',ensureAuthenticated,routes.account);
于 2013-04-10T08:14:37.243 に答える