Spring legacy

JSP에서 스프링 시큐리티 사용하기

voider 2020. 9. 13. 19:36

JSP에서 스프링 시큐리티 사용하기

스프링 시큐리티 관련 정보를 출력하려면 시큐리티 관련 태그 라이브러리를 선언해야 한다.

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

태그는 <sec:authentication>principal이라는 이름의 속성을 사용한다.

사용 예제

admin.jsp

...

<p>principal : <sec:authentication property="principal"/> </p>
<p>MemberVO : <sec:authentication property="principal.member"/></p>
<p>사용자 이름 : <sec:authentication property="principal.member.username"/></p>
<p>사용자 아이디: <sec:authentication property="principal.member.userid"/></p>
<p>사용자 권한 :<sec:authentication property="principal.member.authList"/></p>

..
...

결과

표현식을 이용하는 동적 화면

어떤 페이지에서, 일반 사용자로 로그인했을 때 보여지는 내용과, 관리자로 로그인 했을 때 보여지는 내용이 달라야 한다면(이를테면 관리자용 메뉴 같은 것) 표현식을 이용하여 동적으로 구성할 수 있다.

표현식 설명
hasRole([role])
hasAuthority([authority])
해당 권한이 있으면 true
hasAnyRole([role,role2])
hasAnyAuthority([authority])
여러 권한 중 하나라도 해당하는 권한이 있다면 true
principal 현재 사용자 정보
permitAll 모든 사용자에게 허용
denyAll 모든 사용자에게 허용하지 않음
isAnonymous() 익명의 사용자(로그인하지 않은)의 경우도 해당
isAuthenticated() 인증된 사용자면 true
isFullyAuthenticated() (Remember-me로 인증된 것을 제외한) 인증된 사용자인 경우 true

표현식을 사용한 예제

표현식을 이용해서 로그인 상태라면 '로그아웃' 버튼을,
로그아웃 상태라면 '로그인' 버튼을 화면에 출력하는 예제다.

all.jsp

<!-- 로그인하지 않은 모든 사용자(로그인 중인 사용자에게는 보이지 않음) -->
<sec:authorize access="isAnonymous()">
    <a href="/login">로그인</a>
</sec:authorize>

<!-- 로그인 중인 사용자 -->
<sec:authorize access="isAuthenticated()">
    <a href="/logout">로그아웃</a>
</sec:authorize>

결과