美文网首页
spring boot 使用spring security 配置

spring boot 使用spring security 配置

作者: miniy_7 | 来源:发表于2018-12-25 11:21 被阅读0次

spring boot 跨域方式有多种,本文采用 实现WebMvcConfigurer接口,其他方式可自行百度

步骤

1 实现WebMvcConfigurer接口,重写addCorsMappings方法


/**

* web 配置类型

*/

@Configuration

publicclassWebConfigimplementsWebMvcConfigurer{

/**

    * Cors 跨域处理

    *

    * @param registry

    */

@Override

publicvoidaddCorsMappings(CorsRegistryregistry){

registry.addMapping("/**").allowedOrigins("*").allowedMethods("*").allowedHeaders("*").exposedHeaders(HttpHeaders.SET_COOKIE).allowCredentials(true).maxAge(1800);

}

}

一般情况下 增加这个设置基本就已经是解决了 跨域问题。 但是在用了spring security 的后,发现不好使了。

步骤二 这一步非常关键:


publicclassSecurityConfigextendsWebSecurityConfigurerAdapter{

/**

    * 主配置方法

    *

    * @param http

    * @throws Exception

    */

@Override

protectedvoidconfigure(HttpSecurityhttp)throwsException{

// fixme: 生产环境应参照官方方式打开csrf防护

http.authorizeRequests()

.antMatchers("/rest/system/login","/swagger-ui.html/**","/webjars/**","/v2/api-docs","/swagger-resources/**").permitAll()

.antMatchers("/rest/**").hasAuthority("admin")

.anyRequest().authenticated()

.and().exceptionHandling().accessDeniedHandler(accessDeniedHandler()).authenticationEntryPoint(authenticationEntryPointHandler())

.and().cors() // 这句非常重要了

.and().formLogin().loginProcessingUrl("/rest/system/login").successHandler(authenticationSuccessHandler()).failureHandler(authenticationFailureHandler())

.and().sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS)

.and().csrf().disable();

http.addFilterBefore(authenticationTokenFilter(),UsernamePasswordAuthenticationFilter.class);

}

@Override

protectedvoidconfigure(AuthenticationManagerBuilderauth)throwsException{

auth.userDetailsService(userDetailsServiceImpl())

.passwordEncoder(passwordEncoder());

}

搞定.

相关文章

网友评论

      本文标题:spring boot 使用spring security 配置

      本文链接:https://www.haomeiwen.com/subject/vjoxlqtx.html