[WebDevCurriculum] Session을 활용한 사용자 로그인

Hyo Kyun Lee·2021년 11월 22일
0

WebDevCurriculum

목록 보기
29/44

1. 로그인을 지속할 수 있는 방법

webStorage나 cookie는 사용자(client)측에서 저장하는 자료이기 때문에, 보안상 취약하고 권장하지 않는다.

완전하게 안전한 정보전송이 이루어지는 것은 아직도 미완의 과제이지만, 현재 활용하는 방식은 다음과 같다.

  • 서버에 사용자 정보를 저장한다(session).
  • cookie에 cid, sid만 넘겨준다.
  • 최종적인 인증 과정은 session을 통해 진행한다.

cookie에 session id를 넣어 같이 전달하면, request Header를 통해 해당 id에 접근 및 session을 인증하는 과정을 구성할 수 있다.

2. session

cookie에 session id(식별자)와 함께 key, value 값으로 구성한 문자열

cookie와 마찬가지로 사용자 정보 저장 및 인증을 위해 저장하는, key & value로 이루어진 문자열 데이터이다.

cookie에 식별자(session id)를 넣어 보안성을 강화하고, 이를 해당 server/DB에 저장한다(윈도우를 닫기 전까지는 해당 정보를 저장, 탭을 닫으면 정보 소멸).

3. session 활용

session에는 객체 형태로 다양한 option을 지정해줄 수 있고, 정보를 저장할 수도 있다.

3-1. module import

const session = require('express-session');

cookie와 마찬가지로 session module을 설치하면 사용할 수 있다.

3-2. express middleware 설정

express middleware을 설정해서 req에서 data를 받아올 수 있도록 한다.

root directory가 구성이 완료된 후에 session을 구성해야 data 저장이 가능하다.

router.use('/', cookieParser());

router.get('/', (req, res) => {
    res.render('jwt.html');
});

//session middleware
router.use(session({
    secret: 'secretKey',
    resave: false,
    store: new FileStore()
}));
  • secret : session을 암호화하고 이후 복호화하기 위해 사용된다.
  • resave : session의 값이 변경되지 않아도 저장할지 설정, false를 많이 사용한다.
  • store : session 내의 data를 어디에 저장할지 설정(DB/server/filesystem).

3-3. post 입력 값을 session에 저장

post request에서 전달받은 변수를 session 내부에 저장한다.

 //console.log(req.body);
    let {ID, PW} = req.body;

    //session
    req.session.userID = ID;
    req.session.userPW = PW;

위와 같이 별도로 비구조화를 하지 않아도, 입력받은 값을 req.session을 통해 바로 저장할 수 있다.

3-4. session data 조회

session 내 저장한 변수에 접근하여 data를 조회한다.

router.post('/check', (req, res) => {
    //check data from session
    console.log('-----------------');
    console.log('ID from session');
    console.log(req.session.userID);
    console.log('PW from session');
    console.log(req.session.userPW);
    console.log('-----------------');

3-5. ID/PW 확인

session 내부에 ID/PW가 정상적으로 저장되었는지 확인한다.

4. 참조링크

express-session 개념
https://berkbach.com/node-js%EC%99%80-cookie-session%EC%9C%BC%EB%A1%9C-%EC%82%AC%EC%9A%A9%EC%9E%90-%EC%A0%95%EB%B3%B4-%EC%A0%80%EC%9E%A5-part-2-dbe84c2f13e4
https://m.blog.naver.com/pjok1122/221555161680
https://dev-dain.tistory.com/68

cookie / session 참고
https://okky.kr/article/605454

session undefined 관련
https://jaroinside.tistory.com/15

0개의 댓글