[Spring Boot] 인터셉터 구현 예시

2023. 4. 13. 17:02·Java/Spring Boot
728x90
728x90

#  관련 포스팅

  - 인터셉터 개념 : https://young0105.tistory.com/199

 


DTO

더보기
1
2
3
4
5
6
7
@Data
public class User {
 
    private String username;
    private String password;
    
}
cs

 

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>
Colored by Color Scripter
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";
    }
}
Colored by Color Scripter
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;
    }
    
}
Colored by Color Scripter
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/**");
        
    }
    
}
Colored by Color Scripter
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
'Java/Spring Boot' 카테고리의 다른 글
  • [Spring Boot] yml 파일
  • [Spring Boot] Gradle 빌드 라이브러리 의존성 추가
  • [Spring Boot] 세션 (Session)
  • [Spring Boot] 인터셉터 (Interceptor) ★
스응
스응
    반응형
    250x250
  • 스응
    이서영의 개발 블로그
    스응
  • 전체
    오늘
    어제
  • 글쓰기 관리
    • 분류 전체보기 (384)
      • Java (134)
        • Base (54)
        • Spring Boot (37)
        • JSP (16)
        • Swing (GUI) (20)
        • Design Pattern (7)
      • C# (13)
      • PHP (18)
      • SQL (27)
      • Vue.js (9)
      • Tailwind CSS (4)
      • TypeScript (7)
      • HTML & CSS (27)
      • JavaScript (26)
      • jQuery (10)
      • Android (3)
      • - - - - - - - - - - - - - - (0)
      • Hotkeys (5)
      • CS (30)
      • etc. (13)
      • Error Note (16)
      • Team Project (24)
        • Airlines Web Project (12)
        • University Web Project (6)
        • Strikers 1945 GUI Project (6)
      • My Project (18)
        • Library Web Project (8)
        • Pet Shopping Mall GUI Project (10)
  • 블로그 메뉴

    • Home
    • Write
  • 링크

    • 깃허브
  • 공지사항

  • 인기 글

  • 태그

    Android
    면접
    오블완
    개발일지
    cs
    HTML
    js
    SEO
    typeScript
    zapier
    Swing
    http
    티스토리챌린지
    Hotkeys
    SWAGGER
    vuejs
    errorNote
    java
    jQuery
    jsp
    CSS
    php
    SQL
    C#
    Codeigniter
    SpringBoot
    tailwindcss
    Wordpress
    git
  • 최근 댓글

  • hELLO· Designed By정상우.v4.10.0
스응
[Spring Boot] 인터셉터 구현 예시
상단으로

티스토리툴바