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>
'경험치바(Experience Opint Bar)' 카테고리의 다른 글
[자바스크립트] 팝업창 닫히면서 부모창 액션주기 (0) | 2019.02.08 |
---|---|
[체인지 그라운드] 기업의 '꼼수'에 속지 않는 방법 (페스트 컨슈머) (0) | 2019.02.06 |
[책그림] 사기꾼의 심리학 [우리는 어떻게 뒤통수를 맞는가] (0) | 2019.01.30 |
[책그림] 빅데이터의 배신 | 나는 오늘 알고리즘에게 해고당했다 (0) | 2019.01.22 |
[더나은삶 BetterLife] 구글이 돈을 쓸어담기 위해 준비하는 것들 (0) | 2018.12.26 |