在springboot中集成spring security时,遇到了一个坑,搞了好久有点难受。。。
我这里用的springboot2.x版本的。
首先是security的配置:写了一个类WebSecurityConfig
继承WebSecurityConfigurerAdapter
,这个类是我们在配置security的时候,对我们请求的url及权限规则的一些认证配置。具体的不说了,这里主要是静态资源的问题。
在这个类中我们会重写一些方法,其中就有一个方法,可以为我们配置一下静态资源不需要认证。
@Override
public void configure(WebSecurity web) throws Exception {
//配置静态文件不需要认证
web.ignoring().antMatchers("/static/**");
}
页面的引用如下:
<link rel="stylesheet" th:href="@{static/layui/css/layui.css}">
之后我们启动项目:看到css并没有生效
这时候仅仅通过spring security配置是不够的,我们还需要去重写addResourceHandlers
方法去映射下静态资源,这个方法应该很熟悉了,我们通过springboot添加拦截器的时候就会用到这个。
写一个类WebMvcConfig
继承WebMvcConfigurationSupport
,注意spring boot2版本和1版本是不一样的,spring boot1版本继承的
WebMvcConfigurerAdapter
在spring boot2版本中已经提示过时了
@Configuration
public class WebMvcConfig extends WebMvcConfigurationSupport {
/**
* 配置静态资源
* @param registry
*/
@Override
protected void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/static/**").addResourceLocations("classpath:/static/");
super.addResourceHandlers(registry);
}
}
现在重新启动项目:css文件已经引用成功。