[점프투스프링] '가진 권한이 ADMIN 이면 해당 태그 표시 되게 하기' 질문입니다.
점프투스프링을 바탕으로 쇼핑몰 홈페이지를 만들고 있는데요,
nav(상단 메뉴)에 로그인한 유저가 가진 권한이 'ADMIN'이면 '상품올리기' 문구가 표시되게 만드는게 목적입니다.
<li class="nav-item">
<a class="nav-link" sec:authorize="hasRole('ROLE_ADMIN')" >상품올리기</a>
</li>
<li class="nav-item">
<a class="nav-link active" sec:authorize="isAuthenticated()" th:text="|${#authentication.name} 님|"></a>
</li>
첫번쨰 li 태그는 권한이 ADMIN 일 경우 '상품올리기' 가 표시되게 하는거고,
두번쨰 li 태그는 로그인할 경우 로그인한 이름이 표시되는 기능 입니다.
현재 문제가 두번쨰 li태그는 작동하지만, 첫번쨰 li태그가 작동하지 않습니다, ADMIN 권한일 경우 표시되는 기능이 되질 않습니다.
(sec:authorize="hasRole('ROLE_ADMIN')")
ADMIN권한을 가진 계정은 테스트코드에서 작성했습니다, 해당 코드를 보여드리겠습니다.
HopeStoreApplicationTests.java
//운영자 계정 생성
@Test
void adminCreateTest() {
SiteUser admin = new SiteUser();
admin.setUsername("운영자1");
String password = "1234";
admin.setPassword(passwordEncoder.encode(password));
admin.setPostcode("00000");
admin.setAddress("운영자의 집");
admin.setAddress_detail("운영자의 집 밑");
admin.setEmail("buzz7811@naver.com");
admin.setPhone_number("010-0000-0000");
admin.setRole(UserRole.ADMIN);
this.userRepository.save(admin);
}
테스트 성공 후, h2데이터 베이스에서도 ROLE 필드에 'ADMIN' 이 삽입된것을 확인했습니다.
SiteUser.java (엔티티)
@Entity
@Getter
@Setter
public class SiteUser {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column(unique = true)
private String username;
private String password;
@Column(unique = true)
private String email;
//주소
private String postcode; //우편번호
private String address; //주소
private String address_detail; //상세주소
@Column(unique = true)
private String phone_number; //폰번호
@Enumerated(EnumType.STRING)
private UserRole role; //권한
}
UserRole.java
@Getter
public enum UserRole {
ADMIN("ROLE_ADMIN"),
USER("ROLE_USER");
UserRole(String value) {
this.value = value;
}
private String value;
}
엔티티와 UserRole은 이렇습니다.
현재 어떤것이 문제가 되어
sec:authorize="hasRole('ROLE_ADMIN')"
해당 태그가 왜 안되는지 잘 모르겠습니다.
buzz781 님 342
M 2023년 1월 5일 4:25 오후