728x90
728x90
# 관련 포스팅
- 인터셉터 개념 : https://young0105.tistory.com/199
DTO
jsp form 태그
더보기
1 2 3 4 5 | <form action="/loginProc" method="post"> <input type="text" name="username" value="young"> <input type="password" name="password" value="1234"> <input type="submit" name="login"> </form> | cs |
Controller
더보기
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 32 33 34 35 | @Controller public class UserController { @GetMapping("/loginPage") public String loginPage() { return "login.html"; // 내부에서 이동 } // 인증된 사용자만 들어올 수 있게 막기 // AuthInterceptor를 동작시키려면 URI 매핑 설계를 /auth/**로 해야 함 @GetMapping("/auth/infoPage") public String infoPage(HttpServletRequest request) { System.out.println("여기 코드 실행하려면 로그인 필요"); // 상대 위치로 들어왔으면 : 현재 그 시점에서 맞게 설계 // 상대 경로 or 절대 경로 결정 return "/info.html"; } @PostMapping("/loginProc") // 필요하면 정의해서 사용 public String loginProc(HttpServletRequest request, HttpServletResponse response, User user) { // 세션 저장 후 myInfo 페이지 이동 처리 request.getSession().setAttribute("user", user); System.out.println(user); // redirect : 사용자(브라우저)로 돌아 갔다 옴 // == 새로운 request, response 객체가 만들어짐 // response.sendRedirect("/auth/infoPage"); // 위와 동일한 효과 return "redirect:/auth/infoPage"; } } | cs |
HandlerInterceptor 인터페이스의 구현 클래스
더보기
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 | @Component public class AuthInterceptor implements HandlerInterceptor { @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { // 세션 여부 확인 HttpSession session = request.getSession(); Object user = session.getAttribute("user"); System.out.println("Request URI : " + request.getRequestURI()); // 요청 URI System.out.println("Request Method : " + request.getMethod()); // REST API Method if (user == null) { // System.out.println("미인증 사용자"); response.sendRedirect("/loginPage"); return false; } // true면 컨트롤러로 보냄 // false면 컨트롤러로 보내지 않음 return true; } } | cs |
WebMvcConfigurer 인터페이스의 구현 클래스
더보기
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | @Configuration public class WebMvcConfig implements WebMvcConfigurer { @Autowired private AuthInterceptor authInterceptor; @Override public void addInterceptors(InterceptorRegistry registry) { // 동작시킬 때 모든 페이지를 가로채면 무조건 리다이렉트돼서 오류가 남 // 명시하는 요청 설계 주소에서만 동작해야 함 // 규칙 : 주소 요청이 /auth/**이 붙으면 AuthInterceptor가 동작하도록 구현 처리 registry.addInterceptor(authInterceptor).addPathPatterns("/auth/**"); } } | cs |
320x100
반응형
'Java > Spring Boot' 카테고리의 다른 글
[Spring Boot] yml 파일 (0) | 2023.04.14 |
---|---|
[Spring Boot] Gradle 빌드 라이브러리 의존성 추가 (0) | 2023.04.14 |
[Spring Boot] 세션 (Session) (0) | 2023.04.13 |
[Spring Boot] 인터셉터 (Interceptor) ★ (0) | 2023.04.13 |
[Spring Boot] 필터 (Filter) (0) | 2023.04.12 |