티스토리 뷰

로그인 세션 유지 비로그인 접근 제한

2017 8 7일 월요일

오후 8:55


<!-- 컨트롤러로 요청이 가기전에 인터셉트 -->

<mvc:interceptors>

<mvc:interceptor>

<mvc:mapping path="/**"/> <!-- http://localhost:8181/ex/ 포함 및 그 하위 경로를 나타냄 -->

<!-- 로그인 안돼있으면 접근 가능한 경로는 아래에 적어야함. -->

<mvc:exclude-mapping path="/index/**"/>

<mvc:exclude-mapping path="/list/**"/>

<mvc:exclude-mapping path="/login_view/**"/>

<mvc:exclude-mapping path="/login/**"/>

<mvc:exclude-mapping path="/sign_up/**"/>

<mvc:exclude-mapping path="/sign_up2/**"/>

<mvc:exclude-mapping path="/find_passView/**"/>

<mvc:exclude-mapping path="/assets/**"/>

<mvc:exclude-mapping path="/idCheckForm/**"/>

<mvc:exclude-mapping path="/id_duplication_check/**"/>

<beans:bean class="com.javalec.ex.Interceptor.LoginCheckInterceptor"/>

</mvc:interceptor>

</mvc:interceptors>



Servlet-context.xml 내용을 추가해준다. 사용자가 게시판에 글을 쓰려고 한다던지, 회원만 접근 가능한곳에 로그인 회원이 접근하려고하면 우리는 적절하게 로그인창으로 안내를 해야 할것이다.



역할을 해주는것이 바로 mvc태그의 interceptor이다. Dispatcher-servlet에서 컨트롤러로 요청이 가기전에 사이에 요청을 인터셉트해서 현재 로그인 세션이 존재 하는지 안하는지를 판단해서 세션이 존재하지않으면 로그인창으로 제어를 돌리고, 로그인 세션이 존재한다면 그대로 원래 요청경로를 컨트롤러로 전달해 주는 역할을 하게 된다.



실질적으로 세션이 있는지 없는지 판단하는것은 LoginCheckInterceptor 라는 HandlerInterceptorAdapter 상속받은 객체이다.


 우선 들어오는 모든 경로에 대해 인터셉트 한뒤에 회원가입창, 로그인창, 메인화면등 로그인이 필요하지 않은곳은 제외 시켰다. 보통은 /hi/index 이런식으로 경로를 묶어서

제외를 시키는데, 나는 이번이 프로젝트가 처음이다 보니까 그런걸 예상하지 못하고 경로를 짰기 때문에 제외시켜야 할게 너무 많아졌다. 나중에 다시 수정을 해야겠다.


클래스를 상속받으면 preHandle이라는 메소드가 자동으로 오버라이드 되는데, preHandle이란 컨트롤러로 요청이 가기전에 어떤 처리를 해줄것인지에 대한 함수이다.

세션을 얻어오고, 세션이 없으면 response.sendRedirect 통해서 다시 로그인창으로 제어를 돌려주고 return false 함으로써 요청이 컨트롤러로 가지 못하게 해준다.

세션은 있지만 세션에 커맨드 객체가 없을 경우에도 마찬가지로 처리를 해준다.

 

getSession함수의 인자로 true 사용 -> 무조건 세션을 만들겠다, 세션이 없으면 새로 만들기라도 하겠다.

getSession함수의 인자로 false 사용 -> 세션 없으면 없는대로, 있으면 있는대로..

 

이렇게 되면 로그인 상태에서 로그인이 필요한 서비스를 이용하고자 하면 인터셉터가 제어를 로그인창으로 돌려줄것이다.

세션이 존재하고 세션에 커맨드 객체가 있을경우에는 적절하게 사용자가 원하는 기능을 사용할 있을것이다.

댓글
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함