반응형

Sitemesh 와 Spring Security를 같이 사용하는 개발 환경에서 

header(헤더) 부분에 로그인(login) 여부 확인 시 인증(Authentication)을 호출했을때 

정상작동이 안되는 경우가 있습니다. 

아주 간단하게 해결 할 수 있는 방법이 있습니다. 


해결 방법은 web.xml에 설정 되어 있는 Sitemesh 필터와 Spring Security 필터 순서가 

잘못되어 있기 때문입니다. 필더 순서를 Spring Security 필터의 순서가 먼저 나오고 

Sitemesh 설정이 다음에 나오도록 설정을 하면 header 에 적용이 되지 않는 로그인 문제는

바로 정리가 됩니다. 


decarators.xml에서 설정된 layout 페이지 구성은 일반적으로 URL 을 호출해서 인클루드 시키는

방식으로 구현 되기 때문에 로그인 관련 Spring Security를 필터에서 먼서 체크 해야 합니다. 


Spring Security 태그 라이브러리를 사용하는 방법

>> jsp 페이지에 태그 정의를 include(포함) 합니다. 

<%@ taglib prefix="sec" uri="http://www.springframework.org/security/tags" %>


>> 권한 체크 태그는 다음과 같습니다. 

* 로그인 되지 않았다면 참입니다.

<sec:authorize access="isAnonymous()"></sec:authorize>

* 로그인 했다면 참입니다.

<sec:authorize access="isAuthenticated()"></sec:authorize>

* 인자로 주어진 롤을 가지고 있다면 참입니다.

<sec:authorize access="hasRole('ROLE_ADMIN')"></sec:authorize>

* 인자로 주어진 롤을 가지고 있지 않다면 참입니다.

<sec:authorize access="!hasRole('ROLE_ADMIN')"></sec:authorize>

* 인자로 주어진 롤들중 하나라도 가지고 있다면 참입니다.

<sec:authorize access="hasAnyRole('ROLE_ADMIN','ROLE_MANAGER')"></sec:authorize>

반응형

+ Recent posts