Spring Security 导致Druid登录失败分析

开发的时候遇到的问题Spring Security 默认情况下会拦截所有的页面,包括Druid默认的/druid/ 页面,在校验身份放行后来到Druid登录页面输入账号密码仍无法正常登录…

排查问题

通过http请求的分析

提交请求403

排查了一下发现是由于Spring Security 的CSRF导致的

解决方案

方案一:直接关闭Spring Security 的CSRF功能

在Spring Security 的配置中将csrf 禁用

配置类
1
2
3
4
http.authorizeRequests().antMatchers("/").permitAll()
.antMatchers("/druid/**").hasRole("admin")
.and().csrf().disable()
.formLogin().and().logout();

缺点:全局关闭不合适,系统不安全

方案二:忽略Druid入口的CSRF(推荐)

配置类
1
2
3
4
5
6
http.authorizeRequests().antMatchers("/").permitAll()
.antMatchers("/druid/**").hasRole("admin")
.and().formLogin().and().logout();

// 忽略druid 的 csrf
http.csrf().ignoringAntMatchers("/druid/**");
评论
加载中,最新评论有1分钟缓存...