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
'프로그래밍 > Node.js' 카테고리의 다른 글
Node.js 생활코딩 정리 – Passportjs 로그아웃 구현 (0) | 2016.12.04 |
---|---|
Node.js 생활코딩 정리 – Passportjs 인증 모듈 사용하기 (0) | 2016.12.04 |
Node.js 생활코딩 정리 – Password Key Stretching 기법(PBKDF2 도입) (0) | 2016.12.04 |
Node.js 생활코딩 정리 – Password 암호화 방법 (0) | 2016.12.04 |
Node.js 생활코딩 정리 – 다중 사용자 시스템 만들기 (0) | 2016.12.03 |
Node.js 생활코딩 정리 – 세션(session)을 데이터베이스(mysql)에 저장하기 (0) | 2016.12.03 |
Node.js 생활코딩 정리 – 세션(session)을 파일에 저장하기 (0) | 2016.12.03 |
Node.js 생활코딩 정리 – 세션으로 로그인 애플리케이션 만들기 (0) | 2016.12.01 |