SecurityConfig 설정

@EnableGlobalMethodSecurity(securedEnabled = true)      
@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {

    @Autowired
    private PrincipalOauth2UserService principalOauth2UserService;

    @Bean   
    public BCryptPasswordEncoder bCryptPasswordEncoder(){

        return new BCryptPasswordEncoder();
    }

    @Override
    protected void configure(HttpSecurity http) throws Exception {

        http
                .csrf().disable()
                .authorizeRequests()
                .antMatchers("/","/board/list","/board//detail","/display", "/auth/**", "/css/**", "/js/**", "/img/**")
                .permitAll()
                .anyRequest()
                .authenticated()
                .and()
                .formLogin()
                .loginPage("/auth/user/loginForm")
                .loginProcessingUrl("/login")   
                .defaultSuccessUrl("/")
                .and()
                .logout()
                .logoutSuccessUrl("/")
                .and()
                .oauth2Login()
                .loginPage("/auth/user/loginForm")
                .userInfoEndpoint()
                .userService(principalOauth2UserService);

    }
}

@EnableGlobalMethodSecurity

  • 스프링 시큐리티는 특정메서드에 대한 권한 처리를 하는 MethodSecurity 기능을 제공한다. WebSecurity와 별개로 동작하기 때문에, 추가적인 설정이 필요하다.
  • 시큐리티 어노테이션 활성화 -> @Secured("ROLE_ADMIN")..등

@Bean

  • 해당 메서드의 리턴되는 오브젝트를 IoC에 등록해준다

@loginProcessingUrl

  • login 주소가 호출되면 시큐리티가 낚아채서 대신 로그인을 진행한다.

    (Controller에 "/login"을 만들 필요가 읍다.)

좋은 웹페이지 즐겨찾기