본문 바로가기
카테고리 없음

국비 - 스프링 MV 로그아웃, 아이디 중복검사, 회원정보 수정 및 탈퇴, 로그인 체크 인터셉터

by Jeong.dev 2022. 10. 3.

■ 배운것

- 로그아웃

1. 매개변수 SessionStatus status 

2. status.setComplete();

 

- 아이디 중복검사

1. jsp로 json 타입 데이터 넘겨주기

2. jackson 라이브러리 추가

3.  @ResponseBody 붙여서 컨트롤러 작성

 

- 회원정보 수정 및 탈퇴

1. @SessionAttribute 사용해서 로그인 멤버 매개변수로 가져오기

 

- 로그인 체크 인터셉터

1. LoginCheckInterceptor extends HandlerInterceptorAdapter

2. 서블릿 컨텍스트에 인터셉터 설정

 

 

 

■ 로그아웃

세션 스코프로 확장된 로그인 멤버 지워주고 홈으로 리다이렉트 시키기

 

 

 

■ 아이디 중복검사

1. 컨트롤러에서 jsp로 JSON 형태로 데이터 넘기기 설정

- jsp에서 중복검사 버튼 누르면 member/idCheck URL로 제이슨 형태의 데이터 넘어가게 해놓음

 

1) jackson 라이브러리 추가

jackson-databind, json-path

2) @ResponseBody 어노테이션 사용

컨트롤러에서 리턴타입이 String이면 리턴값 일반적으로 뷰 이름이다.

하지만 진짜로 문자 데이터를 전달하고 싶을 때 사용

 

2. 컨트롤러에 @ResponseBody 붙여서 핸들러 작성, 서비스, 맵퍼 구현

* 서비스에서 맵퍼.아이디 조회하는거 중복되니까

서비스 내부에 메소드 따로 만들어서 호출하도록 한다.

 

 

 

 회원정보 수정 및 탈퇴 

1. 회원정보 수정

1) myPage.jsp 추가, name속성 파라미터랑 같은지 확인, 제이쿼리 사용하는 스크립트문 추가

home에서 회원정보수정으로 넘어갈 태그 추가

 

2) 마이페이지 받는 get 핸들러 추가

 

3) /member/update 핸들러 추가

@SessionAttributes 세션스코프로 변경한 로그인멤버를

@SessionAttribute어노테이션 사용해서 로그인세션에 있는 로그인멤버를 가져올 수 있다.

 

4) model.addObject("loginMember", service.findMemberById(loginMember.getId()));

정보수정 누르면 디비는 바뀌었지만 기존에 로그인세션에 있는 얘가 보여지때문에

다시 조회해서 넣어주는걸로 코드 추가한다.

 

* 로그인 후 수정하고 변경된 내용 잘 뜨는지 확인

 

2. 회원 탈퇴

탈퇴하면 디비에서는 삭제되어도 현제 세션에서는 로그인 정보 유지되어 있어서

model.addObject("location", "/logout"); 로그아웃 시켜서 세션 종료시킴

 

 

 

 로그인 체크 인터셉터

 

- 로그인 체크 인터셉터 : URL로 정보수정 등 들어가면 로그인 안했을 때 접근 못하게

- 인터셉터는 서블릿과 컨트롤러 사이에 있음

- 인코딩필터는 서블릿 밖에 있어서 빈에 접근 못함

  인터셉터 빈 접근 가능

- 로그인체크 필터 사용해도 된다.

 

1) common.interceptor.LoginCheckInterceptor 클래스 만듬

- LoginCheckInterceptor extends HandlerInterceptorAdapter 상속하게 해줌

- alt + shift + s 오버라이드 임플리먼트 method
- 서블릿이 실행되기 전 작업하는 preHandle 메소드 구현

 

2) 서블릿 컨텍스트에 인터셉터 설정 해줌

- 인터셉터 적용시킬 클래스 및 매핑 URL 설정

 

 

 

 

 

 

 

댓글