Knowledge/Spring

로그인 기능은 어떻게 구현할까? 세션에 대해 알아보자

TakeKnowledge 2019. 9. 4. 11:44
반응형

클라이언트 별로 다른 정보를 제공하는 기능은 중요하다.

그러나 중요도에 비해(?) 구현은 굉장히 쉽다 일단 Session에 대해 알아보자

 

- Session

 

클라이언트 별로 서버에 저장되는 정보를 말한다.

 

- 사용법

 

(Spring 4.3.5 버전 기준으로 설명함) 

 

일단 HttpSession을 생성해야 한다. 원래는 HttpRequest의 getSessiono()을 받아와서 세션에 저장하는 방식을 따라야 하는데 ( ex. HttpSession session = request.getSession(); ) 4.3.5 버전에서는 (아마 4이상이지 않을까 싶은데) 아래와같이

 

1
2
3
4
5
6
7
8
@Controller
public class ReservationController {
    
    public String myreservation(@RequestParam(name = "resrv_email", required = falseString resrvEmail,
            HttpSession session) {
 
    }
}

 

컨트롤러 메소드에 HttpSession을 선언만 해주면 세션 아이디 보유 여부를 체크하는 부분은 자동으로 되는 듯 하다. 

 

아무튼 이렇게 선언을 하고 session.setAttribute("id", id); 이런 식으로 session 값을 세팅해주면 잘 세팅된다.

 

session의 유지 시간은 특별히 지정하지 않으면 기본 30분으로 설정되어 있고 30분 이상 서버에 반응을 보이지 않으면 세션은 자동으로 끊어진다. 이러한 세션 유지시간은 서버의 web.xml의 session-config에서 세팅할 수 있다

 

여기의
여기서 설정 가능

 

세션을 끊는 다른 방법은 세가지다.

 

하나는 브라우저를 종료하는 것. 브라우저가 꺼지면 세션도 끊긴다.

나머지 둘은 Spring에서 구현하는 방식인데

 

session.removeAttribute(String id) 를 활용해 지정한 속성의 값을 제거할 수 있고

session.invalidate()를 활용해 현재 생성된 세션을 무효화 시킬 수 도 있다.

반응형