SpringCloud、SpringBoot2.0 整合Oauth2 (四) 配置文件快速配置url过滤

SpringBoot2.0 整合Oauth2 (四) 配置文件快速配置url过滤

文章目录

      • SpringBoot2.0 整合Oauth2 (四) 配置文件快速配置url过滤
        • 1、添加url过滤配置
        • 2、添加配置类
        • 3、配置资源服务器
        • 相关链接
          • SpringCloud、SpringBoot2.0 整合Oauth2 (一) 基本配置
          • SpringCloud、SpringBoot2.0 整合Oauth2 (二) 自定义返回格式及用户基本信息
          • SpringCloud、SpringBoot2.0 整合Oauth2 (三) token改为redis存储方式

1、添加url过滤配置

ignore:
  urls:
  - /oauth/token
  - /notify/**
  #- /**
  clients:
    - singleApp

2、添加配置类

/**
 * ===================================
 * 描 述 : 配置过滤
 * 包 名 : top.qinxq.single.common.auth
 * 创建人 : qinxq
 * ===================================
 */
@Data
@Configuration
@ConditionalOnExpression("!'${ignore}'.isEmpty()")
@ConfigurationProperties(prefix = "ignore")
public class FilterIgnorePropertiesConfig {
    private List<String> urls = new ArrayList<>();
    private List<String> clients = new ArrayList<>();
}

3、配置资源服务器

/**
 * ===================================
 * 描 述 : 资源服务器
 * 包 名 : top.qinxq.single.common.auth
 * 创建人 : qinxq
 * ===================================
 */
@Configuration
@EnableResourceServer
public class ResourceServerConfiguration extends ResourceServerConfigurerAdapter {
    @Autowired
    private FilterIgnorePropertiesConfig filterIgnorePropertiesConfig;
    @Autowired
    private AuthExceptionHandler authExceptionHandler;
    @Override
    public void configure(HttpSecurity http) throws Exception {

//        //表单登录 方式
//        http.formLogin()
//                .loginPage("/authentication/require")
//                //登录需要经过的url请求
//                .loginProcessingUrl("/authentication/form");

//        http
//                .authorizeRequests()
//                .antMatchers("/oauth/token").permitAll()
//                .anyRequest()
//                .authenticated()
//                .and()
//                //关闭跨站请求防护
//                .csrf().disable();

        ExpressionUrlAuthorizationConfigurer<HttpSecurity>.ExpressionInterceptUrlRegistry registry =
                http.authorizeRequests();
        //加载配置文件中ignore过滤列表
        filterIgnorePropertiesConfig.getUrls().forEach(url -> registry.antMatchers(url).permitAll());
        registry.anyRequest().authenticated()
                .and()
                .csrf().disable();
        http.csrf().disable();//关闭 csrf 允许跨域
    }

    @Override
    public void configure(ResourceServerSecurityConfigurer resources) {
        resources.accessDeniedHandler(authExceptionHandler)
                .authenticationEntryPoint(authExceptionHandler);
    }
}

相关链接

SpringCloud、SpringBoot2.0 整合Oauth2 (一) 基本配置

SpringCloud、SpringBoot2.0 整合Oauth2 (一) 基本配置

SpringCloud、SpringBoot2.0 整合Oauth2 (二) 自定义返回格式及用户基本信息

SpringCloud、SpringBoot2.0 整合Oauth2 (二) 自定义返回格式及用户基本信息

SpringCloud、SpringBoot2.0 整合Oauth2 (三) token改为redis存储方式

SpringBoot2.0 整合Oauth2 (三) token改为redis存储方式

你可能感兴趣的:(Spring,Boot,Cloud)