springboot集成springsecurity步骤
1.在pom中引入相关jar
org.springframework.boot spring-boot-starter-security
2.实现 自己的SecurityConfig类(名字随意),需要继承 WebSecurityConfigurerAdapter,然后重写 configure(HttpSecurity hhtp)方法,该方法主要是配置 http 请求的拦截规则
上面只是跟你讲一下大致的步骤,下面讲一下这个配置类。
如图,这是一个springsecurity的配置类,@Configuration代表这是一个配置类,@EnableWebSecurity代表开启Spring Security的功能
这个配置类中,有三个方法,我们一个一个解释
第一个
刚开始理解,我就不懂这个方法是干嘛的,然后查询后理解:WebSecurity主要是配置跟web资源相关的,比如css、js、images等等。ingore是完全绕过了spring security的所有filter,相当于不走spring security。就是把一些静态资源开放给前端
里面引号引起来,就是可以直接访问的路径,不要登录啊或者需要某种角色的权限就能访问的路径。例如最后两个,就是我这个项目首页需要访问的接口。
第二个
这个方法主要就是配置权限的。其中http.authorizeRequests().antMatchers(exclusivePaths).permitAll() 这句是指允许所有人访问exclusivePaths数组中的资源(静态资源、登录的 url)。当然图中这个方法,没有permitall方法,都是配置了权限的。
然后中间两个方法andfilter,andprovider啊,就是自定义的东西,一个是拦截器,一个是验证token的。这个是集成了jwt的东西,所以看上去复杂一点。
anyRequest().authenticated()是指除了上一句过滤的请求之外的所有请求都需要认证才能访问
formLogin()是默认的登录表单页,如果不配置 loginPage(url),则使用 spring security 默认的登录页,如果配置了 loginPage()则使用自定义的登录页
csrf().disable()。我这个项目使用的是jwt,所以不需要csrf。
第一个和第二个方法的区别
第三个
这个是配置跨域请求的,我上一篇对这个方法进行了解释,这里就不再赘述了。
这个方法springsecurity一般是不要的,只是项目有跨域需求,所以配置了。
后面我写了一篇springsecurity框架概述,更偏向于理论学习,有兴趣可以去我的空间翻阅,谢谢支持。