✨ 문제 상황
스프링 부트에서 사용자에 대한 권한 처리도 잘 해주었고, 경로별 인가 설정도 잘 해주었는데 계속해서 403 error
발생
Data Base
SecurityConfig.java
- 경로 접근시 에러 발생
✨ 문제 원인
찾아보니, 스프링 시큐리티에서의 role
값은 항상 'ROLE_' 이라는 접두사가 붙어있어야 한다고 한다.
예를들어 기존에 USER
라고 저장되어있었다면, ROLE_USER
로 값을 저장해야 스프링 부트가 권한을 인식한다.
- AuthorityAuthorizationManager.class in Spring Security
실제로 인가 권한을 체크하는 hasAnyRole()
메소드에서 권한을 체크할 때 ROLE_
prifix를 붙힌 후 검사하는 코드를 확인할 수 있다.
✨ 수정
- DB의
role
값에 ROLE_ 접두사를 붙이도록 수정UPDATE USER SET ROLE=CONCAT('ROLE_', USER.ROLE);
- 스프링 프로젝트 안에서, DB에 유저 정보를 저장할 때,
ROLE_
접두사를 붙힌 후 저장하도록 수정
✨ 결과
정상적으로 인가 처리되는 것을 확인.
'Back End > Spring && Spring Boot' 카테고리의 다른 글
[Spring Boot/Jpa] DB에 반영되지 않는 Entity 필드 정의하기 (0) | 2024.06.15 |
---|---|
[Spring Boot] properties 파일에 작성한 변수 Java에서 사용하기 (0) | 2024.06.14 |
[Spring Boot / JPA] PK값을 자동으로 증가시키기 (0) | 2024.06.11 |
[Spring Data JPA] Repository 메소드 작성 규칙 (1) | 2024.06.07 |
[Spring/JPA] JPA 개념 (0) | 2024.06.06 |