Spring, security 태그 라이브러리
Jan 04, 2018 조회수 273
Spring, security 보안 태그 라이브러리르 이용해서,
계정 권한에[ 따라 해당 메뉴를 보일지, 안보일지를 결정 할 수 있다.
<br/>
우선 Pom.xml에 다음 라이브러리를 추가하자.
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-taglibs</artifactId>
<version>${org.springframework-version}</version>
<type>jar</type>
<scope>compile</scope>
</dependency>
<br/>
<br/>
<br/>
태그 라이브러리를 사용할 페이지의 상단에 다음을 추가하자.
<%@ taglib prefix="sec" uri="http://www.springframework.org/security/tags" %>
<br/>
다음과 같이 사용한다.
<sec:authorize access="isAnonymous()">
<div class="menu-admin">
<a href="${pageContext.request.contextPath}/login" class="btn btn-admin-login">로그인</a>
**
</sec:authorize>
<sec:authorize access="hasRole('ROLE_ADMIN')">
<div class="menu-admin">
<a href="${pageContext.request.contextPath}/j_spring_security_logout" class="btn btn-admin-login">로그아웃</a>
<a href="${pageContext.request.contextPath}/admin/item/manage" class="btn btn-admin-login">프로젝트관리</a>
<a href="${pageContext.request.contextPath}/admin/photo/manage" class="btn btn-admin-login">사진관리</a>
<a href="${pageContext.request.contextPath}/admin/board/upload" class="btn btn-admin-login">게시판글쓰기</a>
**
</sec:authorize>
1 : 익명사용자 권한에게 다음을 보여라.
7 : 관리자 권한에게 다음으 보여라.
<br/>
관리자가 해당페이지 처음에 접속하게되면, 익명사용자로 접속된다.
익명사용자로써 "로그인" 버튼을 확인 할 수 있다.
관리자로 로그인 하게 되면, 익명사용자가 아닌 "관리자"로써 관리자 메뉴를 확인 할 수 있다.
<br/>
*** 표현식 정리**
hasRole([role])
현재 로그인된 사용자가 지정된 role을 가지고 있으면 true를 반환합니다. 제공된 role이 'ROLE_'로 시작하지 않으면 기본적으로 'ROLE_'를 추가합니다. 이것은 DefaultWebSecurityExpressionHandler에서 defaultRolePrefix를 수정하여 커스터마이즈할 수 있습니다.
hasAnyRole([role1,role2])
현재 로그인된 사용자가 콤마(,)로 분리하여 주어진 role들 중 하나라도 가지고 있으면 true를 반환합니다. 제공된 role이 'ROLE_'로 시작하지 않으면 기본적으로 'ROLE_'를 추가합니다. 이것은 DefaultWebSecurityExpressionHandler에서 defaultRolePrefix를 수정하여 커스터마이즈할 수 있습니다.
hasAuthority([authority])
현재 로그인된 사용자가 지정된 권한이 있으면 true를 반환합니다.
hasAnyAuthority([authority1,authority2])
현재 로그인된 사용자가 콤마(,)로 분리하여 주어진 권한들중 하나라도 가지고 있으면 true를 반환합니다. principal 현재 사용자를 나타내는 principal 객체에 직접 접근할 수 있습니다. authentication SecurityContext로 부터 얻은 Authentication 객체에 직접 접근할 수 있습니다.
permitAll
항상 true로 평가 됩니다.
denyAll
항상 false로 평가 됩니다.
isAnonymous()
현재 사용자가 익명사용자(로그인 안됨) 사용자이면 true를 반환합니다.
isRememberMe()
현재 로그인된 사용자가 remember-me 사용자이면 true를 반환합니다.(로그인 정보 기억 기능에 의한 사용자)
isAuthenticated()
현재 사용자가 로그인된 사용자라면 true를 반환합니다.
isFullyAuthenticated()
로그인 정보 기억(remember-me)이 아니라 아이디/비밀번호를 입력하여 로그인 했다면 true를 반환합니다.
hasPermission(Object target, Object permission)
사용자가 주어진 권한으로 제공된 대상에 액세스 할 수 있으면 true 를 반환합니다. 예, hasPermission(domainObject, 'read')
hasPermission(Object targetId, String targetType, Object permission)
사용자가 주어진 권한으로 제공된 대상에 액세스 할 수 있으면 true 를 반환합니다. 예, hasPermission(1, 'com.example.domain.Message', 'read')
<br/>
<br/>
'Spring, security 태그 라이브러리' 관련된 다른글
이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.