• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    해결됨

안녕하세요 강사님 antMatchers 질문드립니다!

21.11.08 12:54 작성 조회수 229

0

안녕하세요 정수원 강사님 항상 수업 잘듣고있는 학생입니다.

3) 사용자 DB 등록 및 PasswordEncoder 

강의 수강중 20:42 에서 서버 기동후에 편집이 되었는지

이후 20:55에 

SecurityConfig 의 http.antMatchers() 파라미터로서

"user/login/**" 패턴이 새로 추가된 것이 보여집니다.

사실

10) 인증 실패 핸들러 : CustomAuthenticationFailureHandler 

강의를 듣는 과정까지 해당패턴을 추가하지 않고

.antMatchers("/", "/users", "/login*").permitAll()

상태로 진행을 하였는데 딱히 에러가 발생하거나 하는부분을 겪지못했습니다.(제가 제대로 실습을 따라가지 못했을 가능성이 존재합니다..ㅠ)

 

결과적으로 "user/login/**" 패턴을 추가하신 이유가 무엇인지 궁금합니다.

 

추가로 antMatchers로써 추가해주는 패턴이라는 것이

클라이언트가 요청하는 URL만을 검사해주고 (ex: GetMapping("/ex"..))

모델뷰로 반환하여 렌더링해주는 뷰의 경로까지는 검사해주지 않는지

 

혹은 뷰의 경로까지 검사하기 때문에 해당 뷰 경로까지 패턴으로 넣어주어야 하는것인지 궁금합니다.

(사실 web.Ingnoreing을 통해 평소 시큐리티가 정적자원을 검사해주는 것까지는 이해하였는데

스프링에서 뷰를 렌더링해줄때도 시큐리티가 적용이 되는지 궁금한것인데 최대한 상세하게 질문드리려 하니 글이 길어졌습니다.)

항상 좋은강의 감사드리며 답변기다리겠습니다.

감사합니다!

답변 2

·

답변을 작성해보세요.

1

아 네 ^^

제가 잘 기억이 나지는 않은데 

"user/login/**" 을 추가 한 것은 user/login 폴더안의 모든 파일 경로에 대하여 접근을 허용 할려고 한 것 같습니다.

특별한 이유가 있는 것은 아니고 필요 없는 코드일 수 있을 것 같습니다.

크게 신경 쓰지 않아도 됩니다.

그리고 antMatchers로써 추가해주는 패턴은 사용자의 요청에 대하여 권한을 심사하도록 하는 설정으로서 사용자가 요청한 자원에 접근할 수 있는지 없는지의 여부를 판단하는 것이기 때문에 스프링에서 뷰를 렌더링 할 때와는 아무런 상관이 없습니다.

즉 요청에 대하여만 권한을 심사합니다.

다만 뷰를 렌더링할 때, 조금 더 정확하게 설명하자면 요청에 대한 응답을 주기 전에 @PostAuthorize(""returnObject.username == authentication.principal.username"") 와 같은 권한 표현식을 활용해서 현재 사용자의 권한 여부에 따라 해당 메소드를 실행하고 뷰로 넘어갈 수 있는지 없는지에 대한 권한 심사를 할 수 있습니다.

이 부분은 권한 쪽 챕터의 메소드 권한에서 설명하고 있으니 참고하시기 바랍니다.

 

0

감사합니다!

궁금증이 완벽해결 되었습니다!!