springboot整合spring security,表单提交403拒绝访问和sec:authorize="isAuthenticated()"失效问题。

最近在学习springboot整合spring security遇到一些问题:
1.有一个新增用户的页面,是使用的form表单进行的post提交。但是总是会报403错误:
springboot整合spring security,表单提交403拒绝访问和sec:authorize=好多小伙伴不陌生吧,对于这个页面,我们都知道403就是权限不足,但是我是有给权限的。

.antMatchers("/users/**").hasRole("ADMIN")

登录的用户就是ADMIN权限,但是访问就会报错,就很纳闷。之后经过百度隔着大海捞针终于找到了问题所在;
出现这个问题就是security框架对于除了get方法以外的大多数方法都会限制,以防止框架内部CSRF(Cross-site request forgery跨站请求伪造)的发生。
既然找到问题所在,那就好解决了,去Spring Security文档去看一下:
Spring Security CSRF
进去之后根据目录找到有关CSRF的内容,在这块:
springboot整合spring security,表单提交403拒绝访问和sec:authorize=
点击进去之后就是如下页面,会有对CSRF的相关说明和在不同情况下的解决办法,当然最简单的就是直接关掉CSRF,有的小伙伴看到这可能就不会往下看了,因为确实解决了403的问题,不过我个人觉得这个办法不够妥当,于是就接着往下看了。
springboot整合spring security,表单提交403拒绝访问和sec:authorize=
(在这就不得不吹一波Google浏览器了,有全文翻译的功能,对我这样英语不好的学渣太友好了。)
springboot整合spring security,表单提交403拒绝访问和sec:authorize=
之后阅读就会了解了问题,就是需要添加token然后后台就会去验证token的正确性,对则允许post访问。具体解决办法就是:

springboot整合spring security,表单提交403拒绝访问和sec:authorize=
在所在的表单中增加如下代码就可以了:

<input type="hidden"
    name="${_csrf.parameterName}"
    value="${_csrf.token}"/>

之后添加后问题解决,新建用户成功!
springboot整合spring security,表单提交403拒绝访问和sec:authorize=
springboot整合spring security,表单提交403拒绝访问和sec:authorize=
springboot整合spring security,表单提交403拒绝访问和sec:authorize=
如果你的问题比我的复杂一点,推荐你去看一篇博文,比我这稍微复杂的,希望可以给你帮助或者以下解题之法。
(此处奉上大佬博文):
https://blog.csdn.net/sinat_28454173/article/details/52251004
2.对于前端页面中的sec:authorize="isAuthenticated()"和sec:authorize="isAnonymous()"无法使用问题。
这个问题还是比较难处理的比较不报错,但是就是不能实现((╯﹏╰))
经过多方查找发现是springboot在引入security的时候在springboot的2.0.7之后的版本中对于此标签好像不支持,所以就会出现写了之后无反应的情况,将我们引入的springboot版本改到2.0.7或者之前版本就好了,希望可以帮到你。

你可能感兴趣的:(springboot,spring,security)