Spring Seurity 정리

sangeun jo·2022년 6월 19일
0

사내결재사이트

목록 보기
3/7

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 권한 유저는 모든 페이지에 접근하면 안됨  

스프링 시큐리티 설정

  1. authorizeRequests vs authorizeHttpRequests 차이

authorizeHttpRequests 보다 authorizeRequests 를 사용하면 access()에서 표현식을 기반으로 oauth2 등등의 권한을 더 디테일하게 설정할 수 있다. 참고
다만 authorizeRequests를 사용하면 .headers().frameOptions().disable() 옵션을 사용할 수 없다.

  1. logoutSuccessUrl() 와 logoutSuccessHandler()는 동시에 사용할 수 없다.
    logoutSuccessUrl에 설정해준 컨트롤러 경로에서 로직을 처리하거나, 아니면 logoutSuccessHandler()를 사용하여 로직 처리 후 원하는 경로로 리다이렉션 해야한다.

  2. .logout().deleteCookies() 를 사용하여 로그아웃할 때 쿠키를 여러개 삭제할 수 있다.

profile
코더가 아니라 개발자가 되자

0개의 댓글