Spring Boot 添加 Security 起步依赖,使用 thymeleaf 模板提交表单被拦截问题

问题:

       最近在学习 Spring Boot,实战的时候遇到了问题,就是添加了 spring-boot-starter-security 依赖后,使用 thymeleaf 提交表单后报 403 错误。

 

原因是:

       添加上述依赖后,默认开启了防止跨域攻击的功能,任何 POST 提交到后台的表单都要验证是否带有 _csrf 参数,一旦传来的 _csrf 参数不正确,服务器便返回 403 错误;

 

解决方案:

1、比较常规的解决方案就是,在 form 表单中添加 th:action 属性, thymeleaf 会 自动在 form 表单中生成 _csrf 隐藏域,代码如下:

<form method="POST" th:action="@{/add}">...</form>

可以打开页面调试,在 Network 栏目下查看提交数据,可以观察到 Form Data 里面生产了 _csrf 数据。

 

2、还有比较直接的解决方案,就是在重写的 configure(HttpSecurity http) 方法中关闭防跨域攻击功能,不太推荐:

http.csrf().disable()

3、还有一种就是在 form 表单中手动添加隐藏 _csrf,比较麻烦,有兴趣的可以网上搜索一下具体做法。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值