すべてのページを読み込む前にauthenticateUser()ミドルウェアを使用しようとしています。 (app.get( '/'、authenticateUser、function()...))のように、各呼び出しでそれをインクルードする代わりに、app.use(authenticateUser)をapp.use(app.router )。Node.js - ミドルウェアのres.redirectに関する問題
しかし、これは機能しませんでした。 authenticateUserは、基本的には次のとおりです。
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');
}
}
}
そしてapp.get( '/ログイン')に私がfalseにreq.session.loginFailedを設定します。
これは動作するはずですが、私は私の実際のページのいずれかのためなど)app.get()またはapp.post(上でそれを呼びたいです。私はそのは
これを行うには良い方法はあります(何回も呼ばれる「trueにloginFailedた設定」、なぜなら1ページのロード時に)多くの異なった要求のために何回と呼ばれる多くを得ると思いますか?または、私は単に私のサイトのすべてのページの前にそれを呼び出す必要がありますか?
フェア、その面白い私は実際にnodepadチュートリアルのオフに働いていたので。私のサイト全体がログインしている必要があるので、手動ですべてのルートに含める必要がないように一緒にハッキングしましたが、適切な方法があればそれを含めるだけです。 –
私は@alessioalexに同意します。あなたが配置したアプローチを主張するならば、あなたの 'app.use(authenticateUser)'がセッションミドルウェアの後であることを確認してください。 – danmactough