nodejs、express、mongoose、およびpassport npmを使用してwebappを作成しています。nodejsミドルウェアのためパスポートがありません
私のログインとログアウト機能はうまくいきましたが、ユーザーがプレミアムユーザーか通常ユーザーかを確認する機能を追加しなければなりませんでした。 ミドルウェアを作成しました。ミドルウェアがログアウトに問題を引き起こしています。 はこちらです。
私のindex.jsファイルでは、ユーザータイプに応じてデータを取得するために、毎秒ajaxリクエストon/matchDataが呼び出されています。
//Login Routes
router.get('/login',isAuthenticated2, function(req, res, next) {
res.render('user/login',{
title:'login'
});
});
router.post('/login',isAuthenticated2, passport.authenticate('local',{failureRedirect:'/users/login', failureFlash:'Invalid Email Id or Password'}),function(req,res){
console.log('Authentication Successful');
req.flash('success','You are logged in.');
res.redirect('/');
});
//logout route
router.get('/logout',isAuthenticated,function(req,res){
req.logout();
req.flash('success','You have logged out');
res.redirect('/');
});
function isAuthenticated(req, res, next) {
if(req.isAuthenticated())
return next();
else{
req.flash('error','Please Login First')
res.redirect('/users/login');
}
}
function isAuthenticated2(req, res, next) {
if(req.isAuthenticated()){
req.flash('info','You are already logged in.')
res.redirect('/');
}
else
return next();
}
私はそれが成功したフラッシュMSGが表示されますが、私のコンソールで、それはまだ私が示してログアウトしたときに、今の問題はあるが、以下のように私のログインおよびログアウトfunctionaltyがある
//ajax routes for json response
router.get('/matchData', isPremium);
//middleware causing problem
function isPremium(req,res,next){
if(req.isAuthenticated()){
if(req.user.type=='premium'){
console.log("user is premium");
Match.getMatchLatestData(function(err,match){
if(err) throw err;
res.send(match[0]);
});
}else{
console.log("user is loggedin but not premium");
Match.getMatchData(function(err,match){
if(err) throw err;
res.send(match[0]);
});
}
}else{
console.log("user not logged in");
Match.getMatchData(function(err,match){
if(err) throw err;
res.send(match[0]);
});
}
}
と私のuser.jsの中ログインはなく、プレミアムまたは私は私がログインしていた場合にのみ、ケースですプレミアム、と思います。
おかげで、この問題以降にログインし、私を保っていたサインアウトバックボタンも別の問題を解決しました。 –
それにフラッシュメッセージを使用する方法をもう一つ。私のエクスプレスアプリはexpress-sessionを使用していますが、今、flash msgはエラーを引き起こしていますreq.flashはセッションが必要です。 @Urvish –
1.ログアウトした後の戻るボタン - ログインしているかどうかをチェックする各ページに1つのエンドポイントがなければなりません。ユーザーがログインしていない場合は、401またはいくつかの修正コードが返されます。レスポンスのいずれかが401を返し、ログインページにリダイレクトする場合は、クライアント側のコードに1つのレスポンスインターセプタを記述します。 –