섹션.8 메서드 기반 권한 부여 @PreAuthorize
574
작성한 질문수 6
안녕하세요? 섹션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
강의 하실 때보다 시큐리티 버젼이 또 올라가서 안되는 부분이 생긴 것일까요?
아니면 제가 어떤 부분을 놓치고 있는걸까요? ㅠ
답변 3
1
정확한 원인과 차이는 모르겠지만 일단 위 상황에 대해서 [실행 가능한 상황] vs [403 에러가 발생하는 상황]을 비교해봤습니다.
IDE : IntelliJ
@P 없이 정상 실행
테스트용 새 프로젝트 (의존성 : web, security)
강의에 공유된 github 프로젝트
@P 포함 시 정상 실행
위 에러가 발생하는 프로젝트
결과부터 말씀드리면 Build 방식에 따라 차이가 발생했습니다.
Build Gradle 일 경우 @P 없이 정상 실행
Build IntelliJ IDEA 일 경우 403 에러
두 빌드 방식의 차이가 증분 빌드 여부라곤 하는데 정확한 이유는 모르겠네요...Build IntelliJ IDEA할때 빌드 안되는 부분이 있나봅니다...
일단 강의 내용대로 실행을 원하시는 분들을 위해 글 남겼습니다.
1
버전에 따른 차이는 아닌 것 같습니다.
강의에서 설명하고 있는 예제를 직접 실행하면 정상적으로 동작하고 있습니다.
코드가 복잡하지 않기 때문에 특별한 문제는 없어 보이는데 권한 관련 다른 문제가 있을 수 도 있습니다.
오타나 기타 설정 등을 확인해 주시기 바랍니다.
0
추가로, @PostAuthorize 관련해서 어떻게 사용하는지는 이해가 가는데 어떤 상황에 적용하면 좋을 지 use case 가 잘 떠오르지 않네요.
보통은 @PreAuthorize 로 설정할 것 같은데, 혹시 @PostAuthorize 를 꼭 사용해야만 하는 use case 가 있을까요?
1
@PostAuthorize 는 예를 들어서 요청 후 어떤 결과를 받아와야 하는데 게시물을 올린 본인것만 가져와야 할 경우 게시물에 저장된 아이디와 인증받은 아이디를 서로 비교해서 일치하면 가져오고 일치하지 않으면 가져오지 못하는 경우를 들 수 있습니다
즉 결과 데이터를 필터링 하고자 할 때 사용합니다.
로그아웃-logout()-2 강에서 겟방식 로그아웃 호출 후 화면이동 질문입니다.
0
25
2
단원별 소스코드
0
55
2
CustomAuthenticationProvider 추가 관련 문의
0
66
2
AOP 의존성 명칭 변경
0
59
1
빈 1개 등록 시 다른 해결 방법
0
61
1
@Bean으로 AuthenticationProvider를 등록 시 http.authenticationProvider 함수를 이용해서 추가해줘야되나요?
0
84
2
OIDC의 id token에 담긴 데이터에 대해
0
69
1
loginPage("/loginPage") 질문드립니다.
0
65
1
@EnableWebSecurity
0
143
1
트랜잭션과 롤백
0
96
1
68. 인증 이벤트 - AuthenticationEventPublisher 활용 강좌 음성 문제
0
84
2
AuthenticationManager 사용 방법
0
144
2
HttpSecurity.authorizeHttpRequests() - 2 강의 부분에 대한 질문
0
98
2
spring security 6.3에서는 HttpSecurity가 만들어지기 전 WebSecurity가 먼저 만들어지는게 맞나요??
0
186
1
init(B Builder), configure(B builder) 에 대하여 질문 드립니다.
0
102
2
메타 주석 질문
0
65
1
동시세션제어 기능에서 로그아웃하기
0
140
3
로그인 후, redirect 에서 error
0
137
3
Session 생성 타이밍에 대한 질문
0
79
2
강의 참고 내용을 개발 로그로 작성해도 될지 문의드립니다.
0
129
2
customAuthentication 관련
0
123
2
authenticationManagerBuilder 주입받은거 vs 만든 거
0
107
1
UserDetailsService()에서 UserDetail이 아닌 타입을 반환할 수 있나요?
0
97
1
9:28 패턴 3의 경우 마지막으로 설정한 것만 적용되는 것 같습니다.
0
155
2





