解决使用security和静态资源被拦截的问题,需要对Spring Security进行相应的配置。
一、配置Spring Security
可以通过以下代码块,实现对Spring Security的配置,主要是开启web_security、关闭跨域保护、开启匿名认证和对静态资源的忽略:
@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.cors()
.and()
.csrf().disable()
.authorizeRequests()
.antMatchers("/static/**").permitAll()
.anyRequest().authenticated()
.and()
.httpBasic();
}
@Override
public void configure(WebSecurity web) throws Exception {
web.ignoring().antMatchers("/static/**");
}
@Autowired
public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception {
auth
.inMemoryAuthentication()
.withUser("user").password("{noop}password").roles("USER");
}
}
二、设置静态资源被拦截的解决方案
有时候,虽然已经使用configure(WebSecurity web)方法将静态资源忽略,依然会出现静态资源被拦截的情况,这时候可以通过以下两种方式进行解决。
1、使用@EnableWebMvc安全配置
在@Configuration类中使用@EnableWebMvc注解开启MVC配置。这时候,如果需要访问静态资源,只需加上"/resources"前缀即可,如下所示:
@Configuration
@EnableWebSecurity
@EnableWebMvc
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
// ...
}
@Override
public void configure(WebSecurity web) throws Exception {
web.ignoring().antMatchers("/static/**");
}
@Autowired
public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception {
// ...
}
}
2、设置静态文件的路径
在pom.xml文件中添加以下配置,将静态文件保存到src/main/resources/static路径下:
<build>
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>false</filtering>
<includes>
<include>**/static/**</include>
</includes>
</resource>
</resources>
</build>
以上便是解决使用security和静态资源被拦截的问题的攻略,希望对您有所帮助。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:解决使用security和静态资源被拦截的问题 - Python技术站