[점프투스프링] '가진 권한이 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 248

M 2023년 1월 5일 4:25 오후

다음 URL의 loadUserByUsername 메서드를 참고해 보세요. https://wikidocs.net/162255#userrole - 박응용님, 2023년 1월 5일 5:15 오후 추천 , 대댓글
목록으로