스프링 시큐리티 어노테이션
주로 사용하는 세 가지 어노테이션
@Secured
- 스프링 시큐리티 초기부터 사용했다. ()안에 'ROLE_ADMIN' 같은 문자열 또는 문자열 배열을 이용한다.
@PreAuthorize, @PostAuthorize
- 스프링3버전부터 지원한다. ()안에 표현식을 사용할 수 있어서 최근에는 더 많이 사용한다.
http.authorizeRequests()
.antMatchers("/sample/all").permitAll()
.antMatchers("/sample/member").access("hasRole('ROLE_MANAGER')")
.antMatchers("/sample/admin").access("hasRole('ROLE_ADMIN')");
또는
<security:intercept-url pattern="/sample/all" access="permitAll"/>
<security:intercept-url pattern="/sample/member" access="hasRole('ROLE_MANAGER')"/>
<security:intercept-url pattern="/sample/admin" access="hasRole('ROLE_ADMIN')"/>
이런 식으로 설정하는 게 아니라 어노테이션만으로 간단히 아래와 같이 설정할 수 있다.
@PreAuthorize("hasAnyRole('ROLE_ADMIN', 'ROLE_MEMBER')")
@GetMapping("/member")
public void doMember() {
log.info("회원만 접근 가능");
}
@PreAuthorize("hasRole('ROLE_ADMIN')")
@GetMapping("/admin")
public void doAdmin() {
log.info("관리자만 접근 가능");
}
xml설정을 이용하는 경우
servlet-context.xml (시큐리티.xml아님!!)에 security네임 스페이스를 추가한 다음,
<security:global-method-security
pre-post-annotation="enabled" secured-anotations="enabled" />
설정을 해주면 된다.
자바 설정을 이용하는 경우,
ServletConfig.java 선언부에
@EnableGlobalMethodSecurity(prePostEnabled = true, securedEnabled = true)
추가해주면 된다.
'Spring legacy' 카테고리의 다른 글
JSP에서 스프링 시큐리티 사용하기 (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 |