interceptor 를 이용하여 자동 로그인 구현

로그인 창에 자동 로그인 체크박스 생성

 

체크박스 클릭 후 로그인 시 : on, 체크박스 클릭하지 않고 로그인 시 : null ( required = false 처리를 해줘야 함 ) 처리 후 체크된 상태로 로그인 성공 시 cookie 값을 발급하고 유저의 id 정보를 쿠키 값으로 저장시킨다

 

alter table membership add 
   session_id varchar2(100) default 'nan' not null;

테이블 추가

( 값이 존재하지 않는다면 nan 으로 저장된다 )

테이블 추가 완료

 

DB 에 추가된 컬럼을 관리할 sessionId 변수와 getter / setter 를 DTO 에 추가 >> 이후 Mapper.xml 에도 session_id 컬럼과 sessionId 변수를 mapping 시켜준다

 

사용자의 쿠키 값과 DB 에 저장된 값이 일치해야 자동 로그인을 처리할 것임

 

Service 인터페이스에 메소드 추가 >> ServiceImpl 에서는 id 값과 autoLogin 값을 HashMap 에 키와 값으로 저장하여 mapper 에 전달

 

Mapper 인터페이스에 메소드 추상화, Mapper.xml 에 해당 메소드에 매핑될 sql 문 작성

 

자동 로그인 체크 후 로그인 성공 시 DB 에 저장되는 것 확인

 

AutoLogin Interceptor 에서 loginCookie 값이 있는지 확인 후 해당 값이 있으면 DB 안에 설정되어 있는 session_id 의 값이 "on" 인지 체크한 뒤 session 의 LOGIN 키의 값을 id 로 생성해준다 >> servlet-context.xml 에 index 경로로 들어오기 전 실행될 AutoLogin 클래스 Interceptor 선언

 

servlet-context.xml 파일에서 모든 경로에서 autoLogin 으로 설정한 Interceptor 가 작동하게 설정

 

Controller 에서 logout 경로로 들어올 시 cookie 값을 만료시키고 DB 안에 on 으로 저장되어 있던 session_id 컬럼의 값을 nan 으로 변경시킨뒤 세션을 모두 삭제하고 login 페이지로 돌려보낸다

728x90

+ Recent posts