Middleware로 url을 통한 접속 막기

Jay·2022년 7월 11일
0

flextube 클론

목록 보기
15/15

로그인 기능을 구현하고 난뒤 드는 생각이 있었다

  • 만약 유저가 로그인을 이미 한 상태에서 다시 로그인페이지로 접속을 한다면?
  • 로그인을 하지않은 유저가 프로필수정페이지로 접속을 한다면?

위와같은 상황이 발생하는 것을 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);

getpost를 같이 사용하는 router에서는 all()문법을 사용하면 된다.

profile
위대한 첫 걸음!

0개의 댓글