로그인을 해도, /welcome 으로 나온다.

/welcome 라우터를 확인해보면,

app.get('/welcome', function(req, res) {
  if (req.session.displayName) {
    res.send(`
      <h1>Hello, ${req.session.displayName}</h1>
      <a href="/auth/logout">logout</a>
    `);
  } else {
    res.send(`
      <h1>Welcome</h1>
      <ul>
        <li><a href="/auth/login">Login</a></li>
        <li><a href="/auth/register">Register</a></li>
      </ul>
    `);
  }
});

으로 작성되어있는데,

이제부터는 passport를 쓰고 있기 때문에, session을 직접 제어하는 것이 아니라, passport를 이용해서 user 정보에 접근하는 것이 바람직한다.

req.user 가 생성되었는지 그리고, req.user.displayName 이 있는지 확인한다.

모두 있다면, 해당 res.send 가 나오게된다. (res.send 부분도 req.user.displayName으로 수정한다.)

app.get('/welcome', function(req, res) {
  if (req.user && req.user.displayName) {
    res.send(`
      <h1>Hello, ${req.user.displayName}</h1>
      <a href="/auth/logout">logout</a>
    `);
  } else {
    res.send(`
      <h1>Welcome</h1>
      <ul>
        <li><a href="/auth/login">Login</a></li>
        <li><a href="/auth/register">Register</a></li>
      </ul>
    `);
  }
});

로그인이 정상적으로 처리되면, logout 과정도 수정해줘야한다.

/auth/logout 라우터로 가보면,

delete req.session.displayName 이 있는데, 이제는 세션을 직접 제어하지 않기 때문에 passport 의 메서드인, logout 메서드를 실행한다.

app.get('/auth/logout', function(req, res) {
  req.logout();
  //세션을 logout() 을 통해서 제거하고 끝난 상태를 확인하기 위해서 다시 저장하는 것이 조금더 안전하게 session 을 관리할 수 있는 방법이다.
  req.session.save(function() {
    res.redirect('/welcome');
  });
});