티스토리 뷰

소스코드를 다 첨부하지는 않고, 핵심 코드만 올리겠습니다. 전체 코드가 필요한 분은 제가 진행하는 프로젝트의 github를 참조하세요. 

2018.1.8 현재 github에 레포지터리는 아직 만들지 않았고, 프로젝트가 어느정도 진행된 후 업로드 할 테니, 그 전에 필요하신분은 

댓글주세요


목표 : 

index.js 에서 로그인 화면으로 이동 후, passport 를 이용해 로그인이 성공하면 다시 index('/') 로 돌아온다. 

처음과 달라진 점은, 로그인 후에는 회원가입시 사용했던 사용자의 이름을 출력해준다는 것이다.

 

index.js

var express = require('express');
var router = express.Router();
/* GET home page. */
router.get('/', function (req, res) {
if (req.user == undefined) {
res.render('index', {logged: false});
}
else{
res.render('index', {logged: true, username: req.user.name}); (A)

}
});

module.exports = router;

index.ejs

<!DOCTYPE html>
<html>
<head>
<title>메인페이지</title>
</head>
<body>
<div class="container">
<div>
<% if(!logged) { %>
<a href="/account/login"> <label>로그인</label></a>
<a href="/account/signup"><label>회원가입</label></a>


<h2> 아직 회원이 아니세요? 회원가입하고 서비스를 이용해보세요!</h2>
<% } else { %>
<label><a href="/post/create">익명글쓰기</a></label>
<label><%=username %></label>
<% } %>
</div>


</div>


</body>
</html>

passport에서 로그인 한 사용자의 정보는 세션에 저장되고, req.user 로 참조할 수 있다.  (A) 참조


코드가 부분밖에 없어서 이해가 어렵지만, 핵심적인 부분만 보자. 


index.js에서 보면 req.user ==undefined 인지 확인해서 undefined 가 아니라면(즉 로그인한 상태라면) res.render 에서 


username : req.user.name 으로 설정해서 index.ejs 로 넘기는걸 볼 수 있다. 

index.ejs에서는 <%=username%> 으로서 username 을 얻게된다.


결과는 아래와 같다. 
에러가 발생한다면 http://4whomtbts.tistory.com/8 를 참고하라.



댓글