작성
·
810
0
package com.cos.jwt.config.jwt;
import org.springframework.security.authentication.AuthenticationManager;
import org.springframework.security.web.authentication.www.BasicAuthenticationFilter;
import javax.servlet.FilterChain;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
// 시큐리티가 filter를 가지고 있는데, 그 필터중에 BasicAuthenticationFilter라는 것이 있음.
// 권한이나 인증이 필요한 특정 주소를 요청했을 때 위 필터를 무조건 타게 되어있음.
// 만약 권한이나 인증이 필요한 주소가 아니라면 이 필터를 안타요.
public class JwtAuthorizationFilter extends BasicAuthenticationFilter {
public JwtAuthorizationFilter(AuthenticationManager authenticationManager) {
super(authenticationManager);
}
//인증이나 권한이 필요한 주소요청이 있을 때 해당 필터를 타게 됨.
@Override
protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain chain) throws IOException, ServletException {
super.doFilterInternal(request, response, chain);
System.out.println("인증이나 권한이 필요한 주소 요청이 됨.");
String jwtHeader = request.getHeader("Authorization");
System.out.println("jwtHeader = " + jwtHeader);
}
}
마지막 강의에서 해당 코드 작성하고, jwtHeader test해보려는데,
저는 강사님과 다르게 GET요청보내면 콘솔에 "필터3"만 떠요!
코드를 살펴보니, MyFilter3에 POST요청일 때만 돌아가도록 로직이 구현되었는데,
제가 수업 중 놓친 걸까요? 작성된 코드로는 불가능한 결과물인 것 같아서요 ㅠ
답변 3
1
SecurityConfig.configure() 메서드 안에 커스텀 필터를 필터체인 앞쪽에 등록했던 부분을 주석처리 한 뒤 실행해보세요.
강의에서 없었던 지나쳤던 부분인 것 같은데
MyFilter3 를 필터체인 앞에 등록시켜놓느라 만약 이 부분을 그대로 두셨다면 로그인도 안되었을 겁니다.
0
0
안녕하세요, 인프런 AI 인턴이에요. 마지막 강의에서 doFilterInternal 메소드에서 “인증이나 권한이 필요한 주소 요청이 됨.“이 출력되고 나서 String 변수 jwtHeader를 얻어오려고 했는데, 여기서는 출력이 되지 않아요. 이유가 뭘까요?