(Spring Code) 인터셉터 구현 예

DTO

더보기

1
2
4
5
6
7
@데이터
공공의 수업 사용자 {
사적인 사용자 이름;
사적인 비밀번호;
}
CS

jsp 폼 태그

더보기

1
2
4
5
<형태 행동=“/loginProc” 방법=“우편”>
<입력 유형=“텍스트” 이름=“사용자 이름” =“어린”>
<입력 유형=“비밀번호” 이름=“비밀번호” =“1234”>
<입력 유형=“제출하다” 이름=“로그인”>
</형태>
CS

제어 장치

더보기

1
2
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
@제어 장치
공공의 수업 사용자 컨트롤러 {
@GetMapping(“/로그인 페이지”)
공공의 로그인 페이지() {
반품 “login.html”; // 내부로 이동
}
// 인증된 사용자만 입장 금지
// AuthInterceptor를 동작시키려면 URI 매핑 디자인이 /auth/**여야 합니다.
@GetMapping(“/auth/infoPage”)
공공의 infoPage(HttpServletRequest 요청) {
체계.밖으로.프린트(“여기에서 코드를 실행하려면 로그인이 필요합니다”);
// 상대 위치를 입력한 경우: 현재 해당 위치에 맞도록 설계됨
// 상대 또는 절대 경로 결정
반품 “/info.html”;
}
@포스트매핑(“/loginProc”) // 필요한 경우 정의하고 사용
공공의 loginProc(HttpServletRequest 요청, HttpServletResponse 응답, 사용자 사용자) {
// 세션 저장 후 myInfo 페이지 이동
request.getSession().setAttribute(“사용자”사용자);
체계.밖으로.프린트(사용자);
// 리디렉션: 사용자(브라우저)에게 반환
// == 새로운 요청 및 응답 객체가 생성됩니다.
// response.sendRedirect(“/auth/infoPage”);
// 위와 같은 효과
반품 “리디렉션:/auth/infoPage”;
}
}
CS

HandlerInterceptor 인터페이스 구현 클래스

더보기

1
2
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
@요소
공공의 수업 인증 인터셉터 구현하다 핸들러 인터셉터 {
@우세하다
공공의 부울 preHandle(HttpServletRequest 요청, HttpServletResponse 응답, 개체 처리기)
던진다 예외 {
// 세션이 있는지 확인
HttpSession 세션 = request.getSession();
개체 사용자 = 세션.getAttribute(“사용자”);
체계.밖으로.프린트(“요청 URI: “ + request.getRequestURI()); // 요청 URI
체계.밖으로.프린트(“요청 방법: “ + request.getMethod()); // REST API 방식
만약에 (사용자 == 없는) {
// System.out.println(“인증되지 않은 사용자”);
response.sendRedirect(“/로그인 페이지”);
반품 거짓;
}
// 참이면 컨트롤러로 전송
// false인 경우 컨트롤러로 전송하지 않음
반품 진실;
}
}
CS

WebMvcConfigurer 인터페이스 구현 클래스

더보기

1
2
4
5
6
7
8
9
10
11
12
13
14
15
16
17
@구성
공공의 수업 WebMvcConfig 구현하다 WebMvcConfigurer {
@Autowired
사적인 AuthInterceptor authInterceptor;
@우세하다
공공의 무효의 addInterceptors(InterceptorRegistry 레지스트리) {
// 작업 중 모든 페이지를 가로채면 무조건 리다이렉트 되어 에러를 남긴다.
// 지정된 요청 디자인 주소에서만 작동해야 합니다.
// 규칙: 주소 요청에 /auth/**가 추가되었을 때 AuthInterceptor가 동작하도록 구현
registry.addInterceptor(authInterceptor).addPathPatterns(“/auth/**”);
}
}
CS