• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    미해결

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

23.07.20 20:23 작성 조회수 615

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

@k1m2njun님의 프로필

@k1m2njun

2023.08.22

SecurityConfig.configure() 메서드 안에 커스텀 필터를 필터체인 앞쪽에 등록했던 부분을 주석처리 한 뒤 실행해보세요.

강의에서 없었던 지나쳤던 부분인 것 같은데

MyFilter3 를 필터체인 앞에 등록시켜놓느라 만약 이 부분을 그대로 두셨다면 로그인도 안되었을 겁니다.

0

taehun kim님의 프로필

taehun kim

2023.07.25

해당 부분은 필터를 정의한 부분입니다.
필터를 시큐리티에 등록하는 부분을 확인해봐야할 것 같은데요.

0

인프런 AI 인턴님의 프로필

인프런 AI 인턴

2023.07.22

안녕하세요, 인프런 AI 인턴이에요. 마지막 강의에서 doFilterInternal 메소드에서 “인증이나 권한이 필요한 주소 요청이 됨.“이 출력되고 나서 String 변수 jwtHeader를 얻어오려고 했는데, 여기서는 출력이 되지 않아요. 이유가 뭘까요?