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/>

0
이전 댓글 보기
등록
TOP