다음과 같이 필터를 설정한다.
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;
// 제대로 된 토큰이 오면 컨트롤러 진입
if(req.getMethod().equals("POST")){
System.out.println("POST 요청");
String headerAuth = req.getHeader("Authorization");
System.out.println(headerAuth);
System.out.println("filter 1");
if(headerAuth.equals("hello")) {
chain.doFilter(req, res);
}else{
PrintWriter out = res.getWriter();
out.println("응답실패");
}
}
}
}
POST로 header에 Autorization 키에다가 값이 hello인 요청이 오면 올바른 요청이라 컨트롤러로 진입할 것이고 아니면 다음 체인으로 넘어갈 것이다.
먼저 hello를 올바르게 넣어보자

성공적으로 컨트롤러로 들어가서 값을 가져오는 것을 확인할 수 있다.
만약 다른 값이 들어온다면?

응답실패가 뜨는 것을 볼 수 있다.
이를 응용해서 앞으로 로그인이 완료되면 토큰을 만들어주고 그걸 응답으로 준 후에 요청이 올 때마다 Authroization에 값을 토큰 값으로 받고 해당 토큰이 유효한지만 검증하면(RSA,HS256) 올바른 요청인지 확인할 수 있게 된다.