먼저 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 처리 됨)
'프로그래밍 > Spring' 카테고리의 다른 글
request.getParameter 조건 빈칸, null 주의 사항 (0) | 2022.01.26 |
---|---|
[Spring-security] JDBC를 이용한 쿼리 호출시 log에창 안뜨는 문제 (0) | 2021.05.21 |
첨부파일의 다운로드 한글깨짐 Controller 부분 처리 (0) | 2021.04.20 |
[jQuery] 페이징 처리에서의 event.preventDefault() (0) | 2021.01.04 |
[Javascript] Json 형태로 받아온 날짜 처리하기 (0) | 2020.12.29 |