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

임주혁님의 프로필 이미지
임주혁

작성한 질문수

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

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

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

작성

·

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

임주혁님의 프로필 이미지
임주혁

작성한 질문수

질문하기