본문 바로가기
[ Developer ]/JSP

[JSP] Filter 필터를 이용한 로그인 세션 체크

by 김현섭. 2016. 5. 25.
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.
# Filter의 개념
  • 브라우저 / 서버(서블릿)
  • 서버에 있는 서블릿 앞쪽에는 filter라는 개념이 있다
  • 요청이 브라우저로 부터 온다면 바로 servlet으로 가지만 
  • filter가 생성되면 브라우저의 요청이 filter를 거쳐 공통으로 처리할 과정들을 처리한다
  • 그 이후에 servlet으로 진행이 되게 된다
  • filter mapping이 /*로 되어 있는 것은 모든 url을 가져와서 filter를 거치겠다는 의미

# 로그인 세션 체크 Filter
세션을 체크해주는 필터를 생성하기 위해 필터를 하나 생성한다
필터 생성 시 URL Mapping을 본다면 주소가 여러 개를 적용시킬 수 있다

우선 모든 URL을 체크할 수 있도록 *로 바꿔준다


그리고 생성된 Filter에서 TODO를 지워준다
-> why? TODO에 Tasks (해야할 일)을 추가해주게 되는데 필요없는 것도 뜨게 되서 필요없는 TODO를 지워준다


그리고 doFilter에서 세션을 체크하기 위해 세션을 추가해 준다
request를 가져올 때 HttpServletRequest로 형 변환을 시켜줘야 한다


로그인시 회원정보가 있다면 '_MEMBER_' 라는 키로 로그인 멤버 정보가 들어온다
그것을 체크해줘야 한다


위와 같이 가져올 때 getAttribute가 값을 가져올 때 object로 가져오기 때문에 MemberVO로 Casting 해줘야한다


member를 null 체크를 통해 로그인이 되었는지 확인한다
그래서 멤버가 null이 라면 Index페이지로 sendRedirect 해줘야하는데


sendRedirect가 없다 HttpServletResponse로 캐스팅 해줘야 한다
캐스팅 이후 리다이렉트를 시켜주면 된다


이제는 로그인 세션이 필요없는 곳을 걸러줘야한다
Index 페이지와 doLoginServlet을 게스트가 접근 가능하게 해야 한다

그렇게 하기 위해서 생성자를 통해서 String 배열을 만들고 거를 URL을 넣는다


# Tips URL URI
  • URL
    • http://host:port/infomation
    • 포트가 필수적으로 붙어야 한다 하지만 포트가 붙지 않는다면 기본 Port이다
    • http -> Port:80, https -> Port:443
  • URI
    • http://host:port 이후에 / 이후부터 시작하는게 URI
    • 가져올 페이지의 정보만 알면 된다

URI를 가져오기 위해 request에서 getRequestURI() 메소드를 이용한다


uri라는 String 변수에 uri 정보를 가져오고 거를 리스트(whiteList)가 포함하지 않을 시 Filter를 진행 시킨다

이제 서버를 재시작하면 


위와 같이 /가 보인다 filter를 경유한 것을 볼 수  있다

하지만 웹을 본다면 이미지가 추가가 안된 경우가 있다


resource 안에 있는 내용이기 때문에 

또한 resource URI로 접근이 되기 때문에 접근이 안되었다
그런 resource는 허용하기 위해서 다른 List로 접근을 제어해줘야 한다
/resource/ 로 괄호를 닫아준 이유는 resource로 시작하는 다시 URI조차 경로가 열릴 수 있기 때문에
/resource/ 폴더로만 한정을 시키는 것이다


위와 같이 List 작성을 한 후 if구절을 통해 걸러 준다


위와 같이 작성했다면 resource 자원들의 uri에 접근이 가능한 것을 볼 수 있다

'[ Developer ] > JSP' 카테고리의 다른 글

[JSP] CSS란? CSS 적용시키기  (0) 2016.05.30
[JSP] JDBC 설치 및 사용  (0) 2016.05.22
[JSP] JDBC (Java Database Connectivity)란? 자바와 DB 연동  (0) 2016.05.22
[JSP] JSTL 사용하기  (0) 2016.05.04
[JSP] 서블릿이란? Servlet  (0) 2016.05.04