본문 바로가기
회고

TIL_211111

코동이 2021. 11. 12.

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