package com.pem.jwt.filter;
import javax.servlet.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
public class MyFilter1 implements Filter {
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
HttpServletRequest req = (HttpServletRequest) request;
HttpServletResponse res = (HttpServletResponse) response;
String headerAuth = req.getHeader("Authorization");
System.out.println("headerAuth = " + headerAuth);
System.out.println("필터1");
// 여기서 response를 이용해 응답을 보내버리면 프로세스가 끝나버리기 때문에
// 프로세스를 진행하기 위해 다시 필터에 요청과 응답을 넘겨줘야 한다.
chain.doFilter(req, res);
}
}
public class MyFilter1 implements Filter {
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
HttpServletRequest req = (HttpServletRequest) request;
HttpServletResponse res = (HttpServletResponse) response;
// http메서드를 확인하는 메서드
// System.out.println(req.getMethod());
if (req.getMethod().equals("POST")) {
System.out.println("POST요청됨!!");
String headerAuth = req.getHeader("Authorization");
System.out.println("headerAuth = " + headerAuth);
}
System.out.println("필터1");
// 여기서 response를 이용해 응답을 보내버리면 프로세스가 끝나버리기 때문에
// 프로세스를 진행하기 위해 다시 필터에 요청과 응답을 넘겨줘야 한다.
chain.doFilter(req, res);
}
}
프로젝트를 다시 시작하고 postman을 이용해 아래처럼 요청을 보내보자
Authorization = hello만 추가하고 보내면 된다.
그럼 아래처럼 Authorization값이 출력된다.
그럼 이제 토큰이 생성되었다고 가정하고, 토큰 정보를 이용하여 연결 테스트를 해보자
@RestController
public class RestApiController {
@GetMapping("home")
public String home() {
return "<h1>home<h1>";
}
@PostMapping("token")
public String token() {
return "<h1>token<h1>";
}
}
// 토큰 = pem
if (req.getMethod().equals("POST")) {
System.out.println("POST요청됨!!");
String headerAuth = req.getHeader("Authorization");
System.out.println("headerAuth = " + headerAuth);
if (headerAuth.equals("pem")) {
chain.doFilter(req, res);
} else {
PrintWriter writer = res.getWriter();
writer.println("인증안됨");
}
}
public class MyFilter1 implements Filter {
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
System.out.println("필터1");
chain.doFilter(request, response);
}
}
public class MyFilter3 implements Filter {
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
HttpServletRequest req = (HttpServletRequest) request;
HttpServletResponse res = (HttpServletResponse) response;
// http메서드를 확인하는 메서드
// System.out.println(req.getMethod());
// 토큰 = pem
if (req.getMethod().equals("POST")) {
System.out.println("POST요청됨!!");
String headerAuth = req.getHeader("Authorization");
System.out.println("headerAuth = " + headerAuth);
if (headerAuth.equals("pem")) {
chain.doFilter(req, res);
} else {
PrintWriter writer = res.getWriter();
writer.println("인증안됨");
}
}
System.out.println("필터3");
chain.doFilter(request, response);
}
}