먼저 pom.xml에 Spring Security 관련한 라이브러리 추가

- spring-security-web
- spring-security-cofing 
- spring-secuirty-core 
- spring-security-taglibs

 

보통 Spring Security의 경우 단독으로 설정할 수 있기 때문에 기존의 root-context.xml이나 servlet-context.xml과는 별로도 security-context.xml을 작성하는 것이 좋음

 

이후 web.xml에 필터(springSecurityFilterChain)를 추가 및 추가 된 security-context.xml을 로딩하도록 설정

 

security-context.xml

기본형

<bean id="customAccessDenied" class="com.spring.security.CustomAccessDeniedHandler"></bean>

<security:http>
	<security:intercept-url pattern="/sample/all" access="permitAll"/>
	<security:intercept-url pattern="/sample/member" access="hasRole('ROLE_MEMBER')"/>
	<security:access-denied-handler error-page="/accessError" />
	<security:access-denied-handler ref="customAccessDenied" />
	<security:form-login/>
</security:http>

작동은 intercept로 작동

- pattern 속성은 intercept가 작동할 페이지의 uri

- access 속성에서 조건을 작성

 o permitAll의 경우 인터셉트가 작동하지 않음

 o hasRole('')로 조건 설정 가능

 

인터셉트 작동시 작동 될 페이지 설정

- access-denied-handler

- error-page 속성을 이용해서 controller를 통해 커스텀 된 에러페이지 작성 후 이동 가능(문제점은 URI 자체의 변화가 없음)

- 접근 제한이 된 경우에 다양한 처리를 하고 싶다면 직접 AccessDeniedHandler 인터페이스를 구현하는 편이 좋음

ex) 쿠키나 세션에 특정한 작업을 하거나 HttpServletResponse에 특정한 헤더 정보를 추가하는 등의 행위를 할 경우

- 직접 구현 했을 경우 구현한 페이지를 빈으로 등록해서 사용(error-page와는 달리 redirect 처리 됨)

 

 

+ Recent posts