관리 메뉴

드럼치는 프로그래머

[Spring] 로그인 여부에 따라 메뉴 숨기고 나타내기 (SECURITY) 본문

★─Programing/☆─WebProgram

[Spring] 로그인 여부에 따라 메뉴 숨기고 나타내기 (SECURITY)

드럼치는한동이 2016. 7. 25. 02:23

메인페이지에서 로그인 하였을 경우엔 로그아웃, 로그인을 하지 않았을 경우엔 로그인 버튼을 띄워주도록 하겠습니다.


시큐리티의 태그들을 사용하기 위해 taglibs 라이브러리를 추가해줍니다.


pom.xml


<dependency>

  <groupId>org.springframework.security</groupId>

  <artifactId>spring-security-taglibs</artifactId>

</dependency>


이후, security taglib을 사용하겠다는 선언을 해주어야 합니다.

security-context.xml에 http에 다음과 같이 추가합니다.


<http auto-config="true" use-expressions="true">



security taglib을 사용하고 싶은 jsp 파일 상단에 다음과 같이 선언합니다.


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


이후 로그인/로그아웃 버튼을 띄워주고 싶은 곳에 security의 authorize 태그를 사용합니다.


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

<a href="${CONTEXT }/j_spring_security_check">로그인</a>

</sec:authorize>

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

<a href="${CONTEXT }/j_spring_security_logout">로그아웃</a>

</sec:authorize>


isAnonymous()는 익명사용자를 의미합니다.

j_spring_security_check는 security에서 default로 제공하는 로그인 기능입니다.


isAuthenticated()는 인증한 사용자를 의미합니다.(로그인 후)

j_spring_security_logout은 security에서 default로 제공하는 로그아웃 기능입니다.


그 외에도, 관리자만 해당시키고 싶다면 access="hasRole('ROLE_ADMIN')"을 써줍니다.

use-expressions(표현식 사용)을 true로 주었기 때문에 다양한 표현식을 사용할 수 있습니다.


http://docs.spring.io/spring-security/site/docs/3.0.x/reference/el-access.html 참조


Expression

Description
hasRole([role])Returns true if the current principal has the specified role.
hasAnyRole([role1,role2])Returns true if the current principal has any of the supplied roles (given as a comma-separated list of strings)
principalAllows direct access to the principal object representing the current user
authenticationAllows direct access to the current Authentication object obtained from the SecurityContext
permitAllAlways evaluates to true
denyAllAlways evaluates to false
isAnonymous()Returns true if the current principal is an anonymous user
isRememberMe()Returns true if the current principal is a remember-me user
isAuthenticated()Returns true if the user is not anonymous
isFullyAuthenticated()Returns true if the user is not an anonymous or a remember-me user


다음 포스팅은 로그인 창을 자신의 입맛에 맞게 커스터마이징 하고, 

XML이 아닌 Database로 부터 계정 정보를 불러와 로그인 하는 방법을 알아보겠습니다.


[출처] http://goldenraccoon.tistory.com/entry/로그인-여부에-따라-메뉴-숨기고-나타내기-SECURITY


Comments