Spring Security Role 여러개 설정하기
이 프로젝트에 Role 3개 존재한다.
사원(STAFF), 매니저(MANAGER), 사장님(OWNER).
STAFF< MANAGER < OWNER 순으로 권한이 있어야 한다.
정석으로 권한 계층 설정하는 방법도 있던데 너무 어려워서 다음에 해봐야겠다.
.authorizeHttpRequests()
.antMatchers("/error/**", "/css/**", "/images/**", "/js/**").permitAll()
.antMatchers("/dashboard", "/request/**", "/mypage").hasAnyRole("ROLE_STAFF", "ROLE_MANAGER", "ROLE_OWNER")
.antMatchers( "/sign1st/**").hasAnyRole("ROLE_OWNER", "ROLE_MANAGER")
.antMatchers("/sign2nd/**").hasRole("ROLE_OWNER")
//.anyRequest()
//.authenticated()
// 구글 로그인을 하므로 사내 직원이 아닌 GUEST 권한 유저는 모든 페이지에 접근하면 안됨
스프링 시큐리티 설정
- authorizeRequests vs authorizeHttpRequests 차이
authorizeHttpRequests 보다 authorizeRequests 를 사용하면 access()에서 표현식을 기반으로 oauth2 등등의 권한을 더 디테일하게 설정할 수 있다. 참고
다만 authorizeRequests를 사용하면 .headers().frameOptions().disable() 옵션을 사용할 수 없다.
- logoutSuccessUrl() 와 logoutSuccessHandler()는 동시에 사용할 수 없다.
logoutSuccessUrl에 설정해준 컨트롤러 경로에서 로직을 처리하거나, 아니면 logoutSuccessHandler()를 사용하여 로직 처리 후 원하는 경로로 리다이렉션 해야한다. - .logout().deleteCookies() 를 사용하여 로그아웃할 때 쿠키를 여러개 삭제할 수 있다.
'Java > Spring Boot' 카테고리의 다른 글
[SpringBoot] Spring Seurity 적용 후 회원가입 안됨 (0) | 2024.05.11 |
---|---|
[SpringBoot] 서버 시작 시 에러 (0) | 2024.05.11 |
[SpringBoot] input 태그의 date 타입을 자바 Date 객체로 파싱하기 (0) | 2024.05.11 |
[Spring Boot] gmail 전송하기 (0) | 2024.05.11 |
[SpringBoot] CORS 대응 (0) | 2022.12.07 |