SpringBoot - ToyProject / Temporage / 로그인 Session 처리 방법
2020. 2. 7. 01:03ㆍ학부 프로젝트/Temporage
Session을 처리하는건 생각보다 귀찮은 문제였다.
- Session에 대한 전제
- Session ID 는 브라우저가 바뀌면 바뀌게 된다.
- 어떤 방법을 써도 Session ID가 바뀌었을때 이전 사용자와 다르다고 판단하여 로그아웃 처리를 하게 된다.
- 브라우저를 껏다가 같은 브라우저를 켜도 Session ID는 바뀌게 된다.
- 세션을 처리하는 방법
- DB에 Session을 저장
- 서버의 in-memory에서 관리
- Client에서 직접 관리 (말이 안되는 방식)
- server에서 file을 만들어 관리.
여기서 나는 DB에 Session ID를 저장해서 관리하는 방법을 사용할 예정이다.
순서
- 새로운 table을 생성.
- 최초 로그인 할 때 session_id, email, access_date 를 저장.
- 세션을 확인하기 위해 Client -> Server로 페이지가 넘어갈 때 마다 request를 보냄.
- email로 session ID를 검색해 session ID 가 틀리면 logout 절차를 밟음.
- session ID가 같다면 access_date를 갱신
- 특정 시간 만큼 access_date가 갱신되지 않았다면 row 삭제.
1. 새로운 Table 생성
spring.jpa.generate-ddl=true
spring.jpa.hibernate.ddl-auto=create-drop
이때 DB에 직접적으로 table을 생성하지 않아도, ddl-auto 옵션을 create-drop으로 주면 APP을 실행해서 WAS가 올라갈때마다 DB가 초기화되고 테이블이 자동으로 다시 생성된다. 원하지 않으면 validate 로 옵션을 변경하면 된다.
2. 최초 로그인시 Session 저장
3. Session 확인
사실 이게 맞게 하는건지는 모르겠다. COOKIE를 사용해 JSESSION 값을 받아와 자동으로 체크하게 만들어 주어야 하는데 일단은 DB에서 불러와서 Client에서 직접 parameter로 넘어온 값을 비교했다.
2편 작성 예정
'학부 프로젝트 > Temporage' 카테고리의 다른 글
SpringBoot - ToyProject / Temporage / Login, Session (0) | 2020.02.15 |
---|---|
Springboot_ToyProject - Temporage / Bcrypt, gradle (0) | 2020.02.02 |
Spring Boot - 1 (0) | 2020.01.11 |