SecurityConfig.java 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. package cn.seecoder.devmanage.security;
  2. import lombok.RequiredArgsConstructor;
  3. import org.springframework.context.annotation.Bean;
  4. import org.springframework.context.annotation.Configuration;
  5. import org.springframework.security.config.annotation.web.builders.HttpSecurity;
  6. import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
  7. import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
  8. import org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter;
  9. import org.springframework.web.cors.CorsConfiguration;
  10. import org.springframework.web.cors.CorsConfigurationSource;
  11. import org.springframework.web.cors.CorsUtils;
  12. import static org.springframework.security.config.http.SessionCreationPolicy.STATELESS;
  13. @Configuration
  14. @EnableWebSecurity
  15. @RequiredArgsConstructor
  16. public class SecurityConfig extends WebSecurityConfigurerAdapter {
  17. private final JwtAuthenticationFilter jwtAuthenticationFilter;
  18. @Override
  19. protected void configure(HttpSecurity http) throws Exception {
  20. http
  21. .cors()
  22. .and()
  23. .csrf().disable()
  24. .sessionManagement().sessionCreationPolicy(STATELESS)
  25. .and()
  26. .authorizeRequests()
  27. .requestMatchers(CorsUtils::isPreFlightRequest).permitAll()
  28. .antMatchers("/limitrequest/student/**").hasAnyAuthority("STUDENT")
  29. .anyRequest().hasAnyAuthority("SEEC", "ADMIN")
  30. .and()
  31. .addFilterBefore(jwtAuthenticationFilter, UsernamePasswordAuthenticationFilter.class);
  32. }
  33. /**
  34. * 本地测试时的跨域设置
  35. */
  36. @Bean
  37. CorsConfigurationSource corsConfigurationSource() {
  38. return httpServletRequest -> {
  39. CorsConfiguration cfg = new CorsConfiguration();
  40. cfg.addAllowedOriginPattern("*");
  41. cfg.addAllowedHeader("*");
  42. cfg.addAllowedMethod("*");
  43. cfg.setAllowCredentials(true);
  44. cfg.checkOrigin("*");
  45. return cfg;
  46. };
  47. }
  48. }