Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- JPQL
- http
- 스프링 핵심 원리
- Spring Boot
- QueryDSL
- 백준
- pointcut
- springdatajpa
- Exception
- spring
- 스프링
- java
- Thymeleaf
- Greedy
- 자바
- 그리디
- 김영한
- transaction
- SpringBoot
- Android
- db
- Servlet
- 알고리즘
- JDBC
- kotlin
- 스프링 핵심 기능
- jpa
- AOP
- Proxy
- 인프런
Archives
- Today
- Total
개발자되기 프로젝트
SpringInterceptor 본문
- 현재 비 로그인 유저의 권한이 없는 페이지 접근을 막기 위해
- controller각 메서드에 검증 로직이 추가되어 있다.
- 사실 controller의 대부분 메서드는 비 로그인 유저가 호출할 권한이 없어야 한다.
- 이는 공통적인 부분으로 일일히 각 메서드에 추가해주기는.. 번거롭다.
- Spring Interceptor는 이와 같이 Web에서 공통적인 관심사를 처리하는데 용이하다.
1. LoginCheckInterceptor
- 나중에 로그인 후 현재 페이지로 돌아오기 위해 현재 uri를 queryParameter로 넘겨줌.
@Slf4j
@RequiredArgsConstructor
public class LoginCheckInterceptor implements HandlerInterceptor {
private final SessionManager sessionManager;
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
String requestURI = request.getRequestURI();
log.info("login 인증 체그 interceptor 실행");
MemberDto loginMember = (MemberDto) sessionManager.getSession(request);
if (loginMember == null){
log.info("비로그인 자용자 접속 시도");
response.sendRedirect("/login?redirectURL="+requestURI);
return false;
}
return true;
}
}
2. Interceptor 등록
- excludePathPattern은 해당 interceptor를 사용하지 않을 경로를 지정한다.
@Configuration
@RequiredArgsConstructor
public class WebConfig implements WebMvcConfigurer {
private final SessionManager sessionManager;
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(new LoginCheckInterceptor(sessionManager))
.order(1)
.addPathPatterns("/**")
.excludePathPatterns("/css/**", "/*.ico", "/error",
"/", "/members/new/form", "/posts", "/posts/*",
"/login", "/logout");
}
}
3. 결과
- 비로그인 상태 "게시글 목록" 접근
2021-10-14 23:55:15.678 INFO 31528 --- [nio-8080-exec-7] hello.blog.web.PostFormController
: 비 로그인 사용자 접속
- 비로그인 상태, 게시글 수정 접근 시 로그인 화면으로 이동
2021-10-14 23:56:56.114 INFO 31528 --- [nio-8080-exec-3] h.b.w.interceptor.LoginCheckInterceptor
: login 인증 체그 interceptor 실행 2021-10-14 23:56:56.624 WARN 31528 --- [nio-8080-exec-3]
2021-10-14 23:56:56.626 INFO 31528 --- [nio-8080-exec-3] h.b.w.interceptor.LoginCheckInterceptor
: 비로그인 자용자 접속 시도
- 이처럼 WEB에서 가지고 있는 공통 관심사는 SpringInterceptor를 활용하도록 하자..
4. GitHub: 211014 interceptor
'Project > 블로그 게시판 만들기' 카테고리의 다른 글
Optional (0) | 2021.10.16 |
---|---|
Test 추가, gerResultList() (0) | 2021.10.16 |
관리자 권한 (0) | 2021.10.14 |
인증처리 - 본인이 작성한 것만.. (0) | 2021.10.13 |
비 로그인 사용자 처리 (0) | 2021.10.12 |
Comments