mini_project/회원가입, 로그인 구현하기

[Spring] 세션(session)에 따른 컨트롤 "@SessionAttribute", 타임아웃 설정

개발자 배찌 2021. 12. 14. 16:25
728x90

SPRING에서의 세션(Session) 컨트롤

Spring은  @SessionAttribute 을 지원한다.

** 이 기능은 세션을 생성하지는 않음.

 

@SessionAttribute(name="loginMember", required = false ) Member loginMember

 

이미 로그인 된 사용자를 찾을 때는 다음과 같이 사용하면 된다.

 

@GetMapping("/")
public String homeLogin(
                @SessionAttribute(name=SessionConst.LOGIN_MEMBER, required=false) Member loginMember
                ,
Model model ) {
          //세션에 회원데이터가 없으면 "로그인되지 않은 home" 으로 이동
          if (loginMember == null) {
                     return "home";
          }

         //세션이 유지되면 "로그인된 home" 으로 이동
         model.addAttribute("member", loginMember);
         return "loginHome";
}

 

but !! 문제점!!

로그인을 처음 시도하면 URL이 다음과 같이 jsessionid 를 포함하고 있는 것을 확인할 수 있다.

http://localhost:8181/;jsessionid-F50011518B21DF62D09F0DF8F83F872

 

이것은 웹 브라우저가 쿠키를 지원하지 않을 때 쿠키 대신 URL을 통해서 세션을 유지하는 방법이다.

서버입장에서는 웹브라우저가 쿠키를 지원하는지 않는지는 최초에 판단 할 수 없으므로, 쿠키값도 전달하고, URL에 jsessionid도 함께 전달된다.

 

URL에 jsessionid가 노출되지 않게 하려면?

 

"application.properties" 파일에 추가

server.servlet.session.tracking-modes=cookie

 

 

세션 타임아웃 설정

특정 세션 단위로 시간 설정하기.

 

"application.properties" 파일

session.setMaxInactiveInterval(1800); //1800초