• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    미해결

섹션.8 메서드 기반 권한 부여 @PreAuthorize

24.05.04 18:46 작성 24.05.04 18:56 수정 조회수 121

0

안녕하세요? 섹션8. 메서드 기반 권한 부여 강의 보다가 잘 안되는 부분이 있어서 질문 드립니다! (16분 쯤에 설명 나오는 부분입니다!)

 

@GetMapping("/user/{id}")
@PreAuthorize("#id == authentication.name")
public String authentication(@PathVariable(name = "id") String id){
    return id;
}

해당 강의에서 user 로 로그인 시 위 url 로 접근이 가능했는데, 똑같이 해봤는데 403 이 떴습니다.
혹시나 해서 공유해주신 github 프로젝트로 해당 branch 로 체크아웃했더니 같은 현상이 나타납니다.

이것저것 시도해보다가 스프링 공식페이지에서 @P 어노테이션에 대한 설명이 있길래 아래와 같이 도입해봤더니 정상동작합니다.

@GetMapping("/user/{id}")
@PreAuthorize("#id == authentication.name")
public String authentication(@P("id") @PathVariable(name = "id") String id){
    return id;
}

https://docs.spring.io/spring-security/reference/servlet/authorization/method-security.html

 

강의 하실 때보다 시큐리티 버젼이 또 올라가서 안되는 부분이 생긴 것일까요?
아니면 제가 어떤 부분을 놓치고 있는걸까요? ㅠ

답변 2

·

답변을 작성해보세요.

1

버전에 따른 차이는 아닌 것 같습니다.

강의에서 설명하고 있는 예제를 직접 실행하면 정상적으로 동작하고 있습니다.

코드가 복잡하지 않기 때문에 특별한 문제는 없어 보이는데 권한 관련 다른 문제가 있을 수 도 있습니다.

오타나 기타 설정 등을 확인해 주시기 바랍니다.

Peter Choi님의 프로필

Peter Choi

질문자

2024.05.07

네, 다른 부분들도 한번 확인해보겠습니다.

감사합니다!

0

Peter Choi님의 프로필

Peter Choi

질문자

2024.05.05

추가로, @PostAuthorize 관련해서 어떻게 사용하는지는 이해가 가는데 어떤 상황에 적용하면 좋을 지 use case 가 잘 떠오르지 않네요.

보통은 @PreAuthorize 로 설정할 것 같은데, 혹시 @PostAuthorize 를 꼭 사용해야만 하는 use case 가 있을까요?

@PostAuthorize 는 예를 들어서 요청 후 어떤 결과를 받아와야 하는데 게시물을 올린 본인것만 가져와야 할 경우 게시물에 저장된 아이디와 인증받은 아이디를 서로 비교해서 일치하면 가져오고 일치하지 않으면 가져오지 못하는 경우를 들 수 있습니다

즉 결과 데이터를 필터링 하고자 할 때 사용합니다.