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>
결과
'Spring legacy' 카테고리의 다른 글
스프링 시큐리티 어노테이션 (0) | 2020.09.13 |
---|---|
Spring Security - UserDetailsService (0) | 2020.09.13 |
Spring Security - 기존 테이블을 이용하는 인증방법 (0) | 2020.09.13 |
UriComponentBuilder (0) | 2020.09.12 |
Spring 게시판 구현 - Presentation Layer II (0) | 2020.09.12 |