반응형
트러블
지금만들고있는 프로젝트에서 특정 API는 USER권한을 가진 계정만 접근이 가능하게 세팅을 해두었다.
그런데 분명히USER 권한을 가진계정으로 로그인을 하고 SecurityContextHolder에 "USER" 가 저장되는것 까지 디버그를 찍어서 확인해보는데도 해당 API로 접근하지않고 권한이없어서 login으로 리디렉션 되는 문제가있었다.
어제 이 문제로 몇시간을 붙잡고있었는데 자고일어나서 다시 해보니 해결방법이 쉽게 나왔다.
(이래서 휴식이 중요한듯하다 안되는거붙잡고있어도 안되는건 어쩔수가 없나보다.)
원인
SpringSecurity에서 역할을 검사할때 내부적으로 ROLE_ 접두사를 사용한다고 한다.
그래서 정확한 문제가 뭐였냐 하면 내가보내는 역활은 USER 였고
Security가 검사하는 역활은 ROLE_USER 였다.. (허무하다)
해결
그래서 Security에서 역활을 불러오는 메서드인 getAuthority( ) 에 "ROLE_" + role 로 접두사로 ROLE_ 을 붙이게 해줬더니 해결이 되었다...
한줄요약
SpringSecurity Role 검사는 ROLE_역할이름 으로 검사한다. 혹시 역할이 정확하게 들어갔는데 통과되지않는다면 ROLE_ 접두사를 붙였는지 잘 확인해보자.
반응형
'포트폴리오 작업 > 트러블 슈팅' 카테고리의 다른 글
쿠키가 안지워지는경우(트러블 슈팅) (0) | 2024.09.04 |
---|---|
vercel ec2 도메인 서브도메인 호스팅 (트러블 슈팅) (1) | 2024.09.04 |
https 요청에러 (트러블 슈팅) (0) | 2024.08.14 |
모바일 강제 다크모드 (트러블슈팅) (0) | 2024.07.27 |
Error resolving template [/common/header] 타임리프 상대경로 (트러블슈팅) (0) | 2024.07.23 |