2017-10-20 11 views
0

私がログインすると認証されますが、別のページに切り替えるとreq.isAuthenticatedがfalseを返し、ログインパネルに表示されます。もう1つは、ログインしたときに「送信後にヘッダーを設定できません」というエラーが発生し続けることです。あなただけpassportミドルウェアによって認証されているので、当然のReq.isAuthenticatedが偽に変わる

const isLoggedIn = (req, res, next) => { 
    if (req.isAuthenticated()) { 
    return res.end(); 
    } else { 
    return res.redirect("/login"); 
    } 
} 
module.exports = (app, passport) => { 
    app.post("/login", (req, res, next) => { 
    passport.authenticate("local-login", 
    (err, user, info) => { 
     if(!user) { 
      res.render("index", { message: "Wrong password or login!" }) 
     } else { 
      req.login(user, (error) => { 
      if (error) return next(error); 
      console.log("AUTH: ", req.isAuthenticated()) <--- RETURNS TRUE 
      return res.render("map", { name: user.name }); 
      }); 
     } 
     })(req, res, next); 
    }); 
    app.get("/", (req, res) => { 
    return res.render("index"); // load the index file 
    }) 
    app.get("/login", (req, res) => { 
    return res.render("index"); // load the index file 
    }) 
    app.get("/map", isLoggedIn, (req, res) => { 
    return res.render("map"); 
    }); 
    app.get("/vehicles", isLoggedIn, (req, res) => { 
    return 
    }); 
    app.get("/settings", isLoggedIn, (req, res) => { 
    res.render("settings"); 
    }); 
    app.get("/logout", (req, res) => { 
    req.logout(); 
    res.redirect("/"); 
    }); 
}; 

答えて

0

ログインページの意志はあなたにreq.isAuthenticatedtrueを与える:ここに私のコードです。ログアウト取得されていない、あなたはあなたが アプリケーションの状態を保存するためのセッションを使用する必要があり、ユーザの状態を維持/logoutルート

を打ったとき、それは偽req.isAuthenticated設定されますまで、パスポートreq.isAuthenticatedtrueを返します

は、下のリンクを見つける:https://www.npmjs.com/package/express-session

あなたが取得している「彼らが送られた後、ヘッダーを設定することはできません」。応答を2回返すためです。 req.isAuthenticated()が真となり、2番目が再びmapページをレンダリングしているようなものです。

ので、代わりのreturn res.end()あなたは説明するが、助けにはならなかったためnext()

const isLoggedIn = (req, res, next) => { 
    if (req.isAuthenticated()) { 
    req.session.isAuthenticated = true; 
    res.locals.isAuthenticated = true; 
    res.locals.user =req.user; 
    next(); //If you are authenticated, run the next 
    } else { 
    return res.redirect("/login"); 
    } 
} 
+0

感謝を使用する必要があります。ログインした後はすべてOKですが、例のマップをクリックすると、私のreq.sessionはリセットのようです – Miqez

関連する問題