본문 바로가기
웹개발/Node.js

[Node.js] 마이페이지 만들기(로그인 상태에서만 이용 가능한 페이지)

by 철없는민물장어 2023. 2. 23.
728x90
반응형

저번에 로그인 기능을 만들었던 것에 이어 마이페이지를 만들어보자.


 

처음 로그인할 때는 passport.serializeUser()함수를 이용하여 세션을 생성해주었는데,

이번에는 세션정보로 DB에서 유저정보를 찾는 passport.desrializeUser()함수를 이용해야 한다.

  //이 세션데이터를 가진 사람을 DB에서 찾음
  passport.deserializeUser(function(아이디,done){
    db.collection('login').findOne({id:아이디},function(에러,결과){
        done(null,결과)
    })
  });

db의 findOne함수로 간단하게 작성할 수 있다.


미리 만들어둔 mypage.ejs를 get요청시 렌더해주여야하는데,

렌더하기전에 유저가 로그인했는지 판별할 필요가 있다.

 

그래서, get함수의 두번째 인자로 미들웨어를 하나 추가해야하는데

그 미들웨어는 '로그인했니'라는 이름으로 만들었다.

  app.get('/mypage',로그인했니,function(req,res){
    //console.log(req.user)
    res.render('mypage.ejs',{사용자:req.user})
  })

  function 로그인했니(요청,응답,next){
    if(요청.user){//로그인 후 세션이 있으면 요청.user가 존재함
        next()
    }else{
        응답.send('로그인 후 이용해 주세요.')
    }
  }

'로그인했니'라는 함수는

요청.user가 존재하면 ==> next() 로 통과

없으면 ==> 로그인을 안 한 상태라고 응답

위 기능을 한다.

*(요청.user는 로그인한 유저의 정보가 담겨있는데,  passport.desrializeUser()함수를 통해 db에서 로그인한 유저의 정보를 가져온 것임)

 

 

 

 

728x90
반응형

댓글