로그인 기능을 구현하고 난뒤 드는 생각이 있었다
위와같은 상황이 발생하는 것을 middleware
를 통해 방지해보자
export const protectorMiddleware = (req, res, next) => {
if (req.session.loggedIn) {
return next();
} else {
return res.redirect("/");
}
};
export const publicMiddleware = (req, res, next) => {
if (!req.session.loggedIn) {
return next();
} else {
return res.redirect("/");
}
};
미들웨어를 만들었으면 각 router
에 넣어준다.
userRouter.get("/logout", protectorMiddleware, logout);
userRouter.get("/github/start", publicMiddleware, startGithubLogin);
userRouter.get("/github/finish", publicMiddleware, finishGithubLogin);
userRouter.get("/kakao/start", publicMiddleware, startKakaoLogin);
userRouter.get("/kakao/finish", publicMiddleware, finishKakaoLogin);
userRouter
.route("/edit")
.all(protectorMiddleware)
.get(getEditUser)
.post(postEditUser);
userRouter.get("/userDelete", userDelete);
get
과 post
를 같이 사용하는 router
에서는 all()
문법을 사용하면 된다.