로그인을 해도, /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>
`);
}
});
req.user
와 req.user.displayName
이 있다면, res.send()
부분이 실행된다.로그인이 정상적으로 처리되면, 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');
});
});