1. Facts(사실, 객관)
- 개인프로젝트 권한설정하기
2. Feelings(느낌, 주관)
스프링 시큐리티를 사용하며 여러 사용법을 다양하게 적용해보고 있습니다. 메서드 수준에서 @PreAuthorize로 인가를 확인할수도 있으며, 애초에 Filter단에서 http로 접근을 제한할 수도 있습니다. 이번에는 단순히 사이트 접속이 아니라 특정 요청에 대한 권한을 추가하기 위해서 @PreAuthorize를 추가해보았습니다. 관리자만 특정 기능을 실행시킬 수 있도록 설계했는데, 생각보다 제대로 되지 않았습니다. stackoverflow에서 그 해답을 얻었는데 좀더 내부의 코드가 어떻게 짜여져 있는지 확인이 필요합니다.
3. Findings (배운 점)
- If you use hasRole('ADMIN'), in your ADMIN Enum must be ROLE_ADMIN instead of ADMIN.
- If you use hasAuthority('ADMIN'), your ADMIN Enum must be ADMIN.
https://stackoverflow.com/questions/30788105/spring-security-hasrole-not-working
@PreAuthorize("hasRole('ADMIN')") 을 사용할 때는 ROLE_ADMIN 권한이 필요하다.
@PreAuthorize("hasAuthority('ADMIN')") 을 사용할 때는 ADMIN 권한이 필요하다.
role 관련설정은 스프링 시큐리티 4이상 버전부터 자동으로 접두사에 'ROLE_'을 추가한다.
하지만, authority는 'ROLE_' 추가로 사용하지 않는다. 따라서 hasAuthority(‘ROLE_ADMIN')와 hasRole(‘ADMIN')은 같은 의미이다.
실제로 GrantedAuthority에 'ADMIN'이라고 저장되어 있었기 때문에 hasAuthority를 사용해야 정상 작동하였다.
*Intro to Spring Security Expressions
https://www.baeldung.com/spring-security-expressions
*Retrieve User Information in Spring Security
https://www.baeldung.com/get-user-in-spring-security
4. Affirmation (자기 선언)
나는 비슷한 개념들의 차이점을 비교하고 정리하여 아는 것과 모르는 것을 명확히 하는 사람이다.
'회고' 카테고리의 다른 글
TIL_211117 (0) | 2021.11.17 |
---|---|
TIL_211115 (0) | 2021.11.16 |
TIL_211110 (0) | 2021.11.11 |
TIL_211109 (0) | 2021.11.10 |
TIL_211108 (0) | 2021.11.09 |