springSecurity配置(整合jwt)

springsecurtty config

/**

  • @author shuang.kou Saving

  • @version 1.1

  • @date 2020.11.28 14:16

  • @description Spring Security配置类
    **/
    @EnableWebSecurity
    @EnableGlobalMethodSecurity(prePostEnabled = true)
    public class SecurityConfiguration extends WebSecurityConfigurerAdapter {

    private final StringRedisTemplate stringRedisTemplate;

    public SecurityConfiguration(StringRedisTemplate stringRedisTemplate) {
    this.stringRedisTemplate = stringRedisTemplate;
    }

    /**

    • 密码编码器
      */
      @Bean
      public BCryptPasswordEncoder bCryptPasswordEncoder() {
      return new BCryptPasswordEncoder();
      }

    @Override
    protected void configure(HttpSecurity http) throws Exception {
    http.cors(withDefaults())
    // 禁用 CSRF
    .csrf().disable()
    .authorizeRequests()
    // 指定的接口直接放行
    // swagger
    .antMatchers(SecurityConstants.SWAGGER_WHITELIST).permitAll()
    .antMatchers(HttpMethod.POST, SecurityConstants.SYSTEM_WHITELIST).permitAll()
    // 其他的接口都需要认证后才能请求
    .anyRequest().authenticated()
    .and()
    //添加自定义Filter
    .addFilter(new JwtAuthenticationFilter(authenticationManager(), stringRedisTemplate))
    //添加自定义Filter
    .addFilter(new JwtAuthorizationFilter(authenticationManager(), stringRedisTemplate))
    // 不需要session(不创建会话)
    .sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS).and()
    // 授权异常处理
    .exceptionHandling().authenticationEntryPoint(new JwtAuthenticationEntryPoint())
    .accessDeniedHandler(new JwtAccessDeniedHandler());
    // 防止H2 web 页面的Frame 被拦截
    http.headers().frameOptions().disable();
    }

    /**

    • Cors配置优化
      /
      @Bean
      CorsConfigurationSource corsConfigurationSource() {
      org.springframework.web.cors.CorsConfiguration configuration = new CorsConfiguration();
      configuration.setAllowedOrigins(singletonList(""));
      configuration.setAllowedHeaders(singletonList("
      "));
      configuration.setAllowedMethods(Arrays.asList(“GET”, “POST”, “DELETE”, “PUT”, “OPTIONS”));
      configuration.setExposedHeaders(singletonList(SecurityConstants.TOKEN_HEADER));
      configuration.setAllowCredentials(false);
      configuration.setMaxAge(3600L);
      UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
      source.registerCorsConfiguration("/
      ", configuration);
      return source;
      }

}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值