如果配置了springsecurity,默认是开启的,不过大多是项目为了便利,往往会在配置中将其关闭的,
.csrf().disable()
不过有些业务场景单纯的认证token不能满足,需要开启csrf防护,找了很久找到了如下方法,做为记录。
配置文件中(WebSecurityConfig)将
.csrf().disable()改为
.csrf().ignoringAntMatchers("XXXX").csrfTokenRepository(CookieCsrfTokenRepository.withHttpOnlyFalse()).and()
配置完之后,会在前端页面的cookie中发现多了一个参数XSRF-TOKEN,我才用的vue的前端,前端没有做任何调整,请求后台接口的时候header中会自动生成一个参数X-XSRF-TOKEN。
开启csrf防护之后,平台操作没有受到影响,不过postman向后台发起post请求受到限制,会提示没有权限,get请求没有受到影响。(postman的cookie和header中添加csrf需要的参数,模拟页面提交,由同事测试均显示没有权限,具体情况待验证)
由于开启了csrf防护之后post请求受到了影响,原先即使配置无需登录就能请求的后台接口也不能访问,为了不影响原先业务,在csrf配置中有一个ignoringAntMatchers,可以将需要忽略的接口路径配置在其中