본문 바로가기

BE/Node.js

[Node.js] 세션, post 방식 전달

 

 

 

 

세션

연습용 파일 세팅

 

파일 세팅

 

세션 모듈 다운로드

 

session 기본 Config 설정!!!! 필수★★★★★

 

app01.js 파일에 세션 설정

 

session router 와 session controller 작성

 

index.ejs 파일 작성

 

세션 설정용 경로, 확인용 경로 2개 라우터와 컨트롤러에 설정

 

set_session.ejs 와 get_session.ejs 파일 생성 및 작성

 

컨트롤러에서 get_session 페이지에 세션 정보를 변수로 담아 전달하는 코드를 작성

req.session.[ 세션키 ]

 

코드 실행

 

라우터와 컨트롤러에 delSession 경로를 추가

 

del_session.ejs 작성

 

키 값으로 특정 세션을 삭제하는 경우와 모든 세션을 삭제하는 경우의 코드 차이

delete req.session.[세션 키] : 특정 키의 세션을 삭제

req.session.destroy() : 모든 세션을 삭제

 

 

body-parser : post 방식의 데이터를 가져올때 사용하는 방식

코드 실행

 

세션도 동일하게 만료시간을 설정해줄 수 있다

( session 의 default 자동 만료 시간은 30분 )

 

세션 만료시간 설정

세션의 만료 시간 설정, 5초 후 세션이 만료되게 설정

 

 

 

 

 

body-parser 모듈 설치

body-parser : post 방식의 데이터를 가져올때 사용하는 방식

body-parser 설치

 

body-parser 를 middle-ware 로 등록

 

로그인 기능을 구현하기 위해 router 와 controller 에 경로를 추가

 

login.ejs 작성 ( 로그인 정보를 세션으로 담아 보낼 것이기 때문에 post 형식으로 전달 )

 

router 에 login_check 경로 생성 ( post 방식으로 전달했기 때문에 router.post 를 사용 )

라우터에 post 방식으로 받아오기 때문에 router.post 를 사용한다

controller 에서 세션에 대한 정보를 받아서 콘솔에 출력하는 코드 작성

 

세션 값 확인

 

로그인 검증 코드를 controller 에 작성 ( DB 는 더미 데이터 변수 사용 )

 

success 경로로 가는 기능을 router 와 controller 에 작성

 

success.ejs 파일 생성 및 작성

 

로그인 정보가 있을때만 success 페이지로 보내는 코드를 작성, 로그인 실패 시 로그인 실패 문구 출력 코드도 작성

success 함수 부분에 if 문 안에 req.session.username 은 오타 => req.session.userName 으로 변경해야 함

 

스크립트를 처리하는 함수를 따로 선언

 

함수로 간단하게 출력 문구 코드 대체

 

로그인 부분에 username 키를 전달

 

로그인 페이지에 접근했을때 username 이라는 세션이 존재한다면 로그인 문구 출력, 세션이 존재하지 않는다면 로그인 창을 출력

 

router 와 controller 에 세션을 모두 만료시키는 기능을 추가

 

코드 실행

( 시크릿 모드로 실행시키면 개발자 모드를 켜놓지 않고 /localhost:3000/session/success 로 직접 진입 시 alert 창이 출력되지 않고 바로 /localhost:3000/session/login 으로 리다이렉트 되는 현상이 발생.... 시크릿 모드 해제 또는 시크릿모드에서 개발자 모드 활성화 및 다른 브라우저로 작동시키면 정상 작동 확인 )

 

 

 

 

 

파일로 세션을 저장해서 관리하는 방법

( 개발할때 테스트가 필요한 경우 코드를 수정하면 세션이 초기화되기 때문에 파일로 저장해놓고 사용 )

 

npm install session-file-store

session-file-store 모듈 필요

사용 방법은 구글링 해보기

 

 

 

 

 


 

 

 

 

 

실습 예제

실습 예제

 

728x90