프로그래밍/Node.js

Node.js 생활코딩 정리 – 인증 기능 추가하기

가카리 2016. 12. 3. 23:41
반응형

authentication 인증 기능 추가하기

 

app_multi_user_file.js

다음 두 군데가 수정되었다. 이번에는 사용자가 입력한 아이디가 실제 users배열에 있는지 확인 후 로그인을 시키는 것이다. post부분은 회원가입 후 좀 더 이쁘게 바꾸기만 했다.

 

app.post('/auth/register', function(req, res){

var user = {

username:req.body.username,

password:req.body.password,

displayName:req.body.displayName

};

users.push(user);//입력한 값을 users배열 맨뒤에 추가함

//res.send(users);//한번 뿌려봄

req.session.displayName = req.body.displayName;

req.session.save(function(){

res.redirect('/welcome');

});

});

 

 

app.post('/auth/login', function(req, res){

var uname = req.body.username;//POST방식으로 보낸 값을 가져옴

var pwd = req.body.password;

 

for(var i=0; i < users.length; i++){//계정이 실제로 존재하는지 확인하는 루프

var user = users[i];

if(uname === user.username && pwd === user.password){//아이디와 패스워드 둘다 같으면

req.session.displayName = user.displayName;

return req.session.save(function(){//세션값이 세팅이 끝나면 콜백이 호출됨 return때문에 for문이 즉시 중지됨

res.redirect('/welcome');// welcome 페이지로 이동

});

}

}

res.send('who are you?<a href="/auth/login">login</a>');//이게 실행되면 사용자가 존재하지 않음

});

 

실행화면

이전과 동일하다

 

이번 강의에서 참고 자료

 

egoing 잼있는 강의 감사합니다.
강의 내용을 보면서 따라하다가 이러면 어떨까라는 생각이 드는 부분이 있어서 코멘트를 남기며 질문도 있습니다.

강의 내용 아래의 코드 부분에 displayName 삭제하고 save 하는 식으로 logout 진행하셨는데요.
app.get('/auth/logout', function(req,res){
delete req.session.displayName;
req.session.save(function(){
res.redirect('/welcome');
});
로그아웃시에는 session 정보를 삭제하는 것이 옳지 않나 라는 들어서 찾아본 결과
save
말고 delete라던가 regenerate등의 정보가 있더라구요.
아래의 코드를 수행시키면 기존의 session 값은 사라지고 새로운 sesison 파일이 생성되며 displayname값도 사라지게 됩니다.
req.session.regenerate(function(err){
res.redirect('/welcome');
});
개인적인 생각으로는
DB
에서 변경(Update) 속도가 빠르다면 전체 값을 초기화 해주는 방법을 찾는게 좋을 같으나,
삭제 생성의 속도도 문제가 되지 않는다면 session 들어간 모든 값을 초기화 해주는 방법은 아무래도 재생성이 맞는 같기도 합니다.
질문사항
실제 상용 서버에서는 보통 해당 상황에서는 어떻게 진행하는지요?
로그인에 관련된 특수한 정보만 지우고 나머지 세션값은 가지고 있는지요?

단순히 naver 확인해보니 로그인을 경우 cookie my.naver.com이라는 값이 새로 생기고 로그아웃의 경우 사라지고 있네요. 허허허 역시 상용서버는 많이 복잡하네요.

 

 

출처 : https://opentutorials.org/course/2136

 

반응형