이 프로젝트에 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 권한 유저는 모든 페이지에 접근하면 안됨
authorizeHttpRequests 보다 authorizeRequests 를 사용하면 access()에서 표현식을 기반으로 oauth2 등등의 권한을 더 디테일하게 설정할 수 있다. 참고
다만 authorizeRequests를 사용하면 .headers().frameOptions().disable() 옵션을 사용할 수 없다.
logoutSuccessUrl() 와 logoutSuccessHandler()는 동시에 사용할 수 없다.
logoutSuccessUrl에 설정해준 컨트롤러 경로에서 로직을 처리하거나, 아니면 logoutSuccessHandler()를 사용하여 로직 처리 후 원하는 경로로 리다이렉션 해야한다.
.logout().deleteCookies() 를 사용하여 로그아웃할 때 쿠키를 여러개 삭제할 수 있다.