인프런 커뮤니티 질문&답변

임주혁님의 프로필 이미지

작성한 질문수

스프링부트 시큐리티 & JWT 강의

스프링부트 시큐리티 27강 - jwt토큰 서버 구축 완료

마지막 강의에서doFilterInternal jwtHeader 테스트

작성

·

807

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를 얻어오려고 했는데, 여기서는 출력이 되지 않아요. 이유가 뭘까요?