[java web spring] [Spring] web.xml - Filter url 제외시키기  

Filter URL Exclude

얼마 전 2차 인증을 구현해야 하는 업무 도중

Spring Security를 사용하다가, 로그인 부분에 덕지덕지 붙이는 것 같아

분명 빠른 길이 있는데, 먼 길을 돌아가는 것 같았다.

 

굳이 로그인 이후에, 추가 인증을 하고 싶다면

그리고 그 인증의 대상이 사용자마다 상이하다면

 

Servlet에서 Filter을 시켜주는 것도 괜찮았기에 

남기는 글입니다.

 

 

 Web.xml을 조금 수정하자

서블릿에 커스텀 필터를 달아주고, 이를 초기화 해줄 값을 넣어줍니다.

 

1
2
3
4
5
6
7
8
<filter>
    <filter-name>CustomAuthenticationFilter</filter-name>
    <filter-class>com.test.gate.filter.AuthenticationFilter/filter-class>
    <init-param>
        <param-name>excludedUrls</param-name>
        <param-value>/admin/secondary/login.do,/admin/secondary/authentication.do</param-value>
    </init-param>
</filter>
cs
 

 

 

 

 커스텀 필터를 만들어보자

이제 위에서 입력한 경로

com.text.gate.filter.AuthenticationFilter를 생성합니다.

(Filter에 대해서 아직 모르신다면 조금 검색하면 알 수 있습니다.)

 

1
2
3
4
5
6
7
public class AuthenticationFilter implements Filter{
 
    private List<String> excludeUrls;
 
    ...
}
 
cs

 

 

 

 

 

이때 몇 가지 메소드를 오버라이드 해줍니다.

경축! 아무것도 안하여 에스천사게임즈가 새로운 모습으로 재오픈 하였습니다.
어린이용이며, 설치가 필요없는 브라우저 게임입니다.
https://s1004games.com

 

이제 URL를 제외시키기 위해서 

딱 두가지 부분만 수정하겠습니다.

 

FilterConfig를 사용해서 ',' (콤마) 로 구별한 URL를 가져오고

리스트에 넣어줍니다.

 

1
2
3
4
public void init(FilterConfig filterConfig) throws ServletException {
    String excludePattern = filterConfig.getInitParameter("excludedUrls");
    excludedUrls = Arrays.asList(excludePattern.split(","));
}
cs
 

 

 

이제 필터링을 해줍니다.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
public void doFilter(ServletRequest request, ServletResponse resp, FilterChain chain)
            throws IOException, ServletException {
 
    String path = ((HttpServletRequest) request).getServletPath();
        
    if(!excludedUrls.contains(path))
    {
        // 제외하지 않는 경우
        // 로직을 타게 합니다.
    }
        
    // 제외하는 경우 흘려줍니다
    chain.doFilter(req, resp);
}
cs
 

 

 

 

 

마무리

생각나는대로 써서 부족한 점이 많습니다.

그나저나 서블릿도 재미있네요.

 

다음은 서블릿에서 Bean 주입이 되지 않는 경우

어떻게 주입을 시켜주면 좋을지 글을 써야겠습니다.



출처: https://redcoder.tistory.com/194 [로재의 개발 일기]

 

 

본 웹사이트는 광고를 포함하고 있습니다.
광고 클릭에서 발생하는 수익금은 모두 웹사이트 서버의 유지 및 관리, 그리고 기술 콘텐츠 향상을 위해 쓰여집니다.
번호 제목 글쓴이 날짜 조회 수
186 [Java Web programming] Spring boot(백엔드)와 React.js(프론트엔드)의 만남 - 프론트엔드 졸리운_곰 2021.08.29 138
185 [java][spring][mybatis] [MyBatis] resultType에 넣을 수 있는 값 정리 졸리운_곰 2021.08.17 341
184 [Java Spring web programming][자바 웹 개발] 10+ Free Open Source Projects Using Spring Boot file 졸리운_곰 2021.08.12 76
183 [java 웹 프로그래밍] Spring boot - Thymeleaf 기본 문법 졸리운_곰 2021.08.11 61
182 [Java 웹 프로그래밍] Tutorial: Thymeleaf + Spring file 졸리운_곰 2021.08.10 46
181 [java][spring boot][gradle] GitHub에서 스프링 부트 & Gradle 프로젝트 Import 하기! file 졸리운_곰 2021.08.05 116
180 [java, spring] Get HTTP POST Body in Spring Boot with @RequestBody 졸리운_곰 2021.06.18 55
179 [Java, jsp, jstl] [JSTL] Functions Tag - fn:contains() 사용하기 졸리운_곰 2021.06.09 80
178 [Java, jsp, jstl] [JSTL] List 갯수(size) 구하기 졸리운_곰 2021.06.02 237
177 [java, jsp, jstl] JSTL에서 변수두개사용하기 : jsp jstl list<> 두개를 졸리운_곰 2021.06.02 187
176 [Java Web, JSTL] 반복문 <c:forEach>, <c:forTokens> 졸리운_곰 2021.05.27 66
175 [Java Web] 조건문 <c:if>, <c:choose>, <c:when>, <c:otherwise> 졸리운_곰 2021.05.26 157
174 [java, web dev] forEach를 이용해서 JSTL로 출력하기 졸리운_곰 2021.05.24 102
173 [Java, Web dev] JSTL문법 <c:forEach> c:tag를 이용한 리스트 출력 file 졸리운_곰 2021.05.24 99
172 [Java][Web][Spring] vo 여러개 전달하기. LIST<VO> vo를 list 로 넘기기 / 받기 졸리운_곰 2021.05.20 1974
171 [java web dev, spring, freemaker] freemarker (개념, jsp와 차이, 문법, spring과 연동 설정, 예제) file 졸리운_곰 2021.05.17 72
» [java web spring] [Spring] web.xml - Filter url 제외시키기 졸리운_곰 2021.05.14 200
169 [Java Web Srping mvc] Spring MVC - home.jsp의 동작원리 file 졸리운_곰 2021.05.14 65
168 [java, web, jsp] Servlet/JSP에서 Ajax 사용 file 졸리운_곰 2021.05.13 478
167 [java][JAVA WEB] [JSP] JSTL 사용 방법 - 주요 태그 문법 정리 . file 졸리운_곰 2021.04.22 87
대표 김성준 주소 : 경기 용인 분당수지 U타워 등록번호 : 142-07-27414
통신판매업 신고 : 제2012-용인수지-0185호 출판업 신고 : 수지구청 제 123호 개인정보보호최고책임자 : 김성준 sjkim70@stechstar.com
대표전화 : 010-4589-2193 [fax] 02-6280-1294 COPYRIGHT(C) stechstar.com ALL RIGHTS RESERVED