우선 manager와 admin이라는 id로 회원가입을 하자 (id는 굳이 저게 아니어도 된다.)
그리고 권한을 변경해 준다.
update user set role = 'ROLE_MANAGER' where id = 2;
update user set role = 'ROLE_ADMIN' where id = 3;
commit;
manager로 로그인을 하자
user와 manager 페이지로 이동이 가능하다.
하지만 admin은 안된다.
이번에는 admin으로 로그인을 하자
user, manager, admin 모두 갈 수 있다.
한 가지 추가하자면
SecurityConfig
@Configuration // IoC 빈(bean)을 등록
@EnableMethodSecurity(securedEnabled = true) // secured 어노테이션 활성화
public class SecurityConfig {
IndexController
@GetMapping("/info")
@ResponseBody
public String info() {
return "개인정보";
}
로그아웃 한 후 info에 접속해 보면 접속이 가능하다.
이제 IndexController에서
@Secured("ROLE_ADMIN")
@GetMapping("/info")
@ResponseBody
public String info() {
return "개인정보";
}
이렇게 변경하고 다시 info에 접속하면 들어가지지 않고, 로그인 페이지가 나온다. @Secured를 통해 원하는 곳만 제한을 걸 수 있다.
@Configuration // IoC 빈(bean)을 등록
@EnableMethodSecurity(securedEnabled = true, prePostEnabled = true) // secured 어노테이션 활성화, preAuthorize와 postAuthorize 어노테이션 활성화
public class SecurityConfig {
@PreAuthorize("hasRole('ROLE_MANAGER') or hasRole('ROLE_ADMIN')")
@GetMapping("/data")
@ResponseBody
public String data() {
return "데이터정보";
}
@PreAuthorize는 해당 메서드가 실행되기 직전에 실행된다. 권한을 여러 개 걸고 싶을 때 사용할 수 있다.
@PostAuthorize라는 것도 있는데 이것은 메서드가 실행된 후 실행된다.
'Spring Security' 카테고리의 다른 글
[OAuth] 구글 회원 프로필 정보 받아보기 (0) | 2023.03.26 |
---|---|
[OAuth] 구글 로그인 준비 (0) | 2023.03.26 |
[기본] 시큐리티 로그인 (0) | 2023.03.25 |
[기본] 시큐리티 회원가입 (0) | 2023.03.25 |
[기본] 시큐리티 설정 (0) | 2023.03.25 |