在这里插入图片描述

二、SpringSecurity干系配置1.配置认证信息

配置登录和注销干系的信息

<security:http auto-config="true" use-expressions="true"> <!-- 拦截资源 pattern="/" 拦截所有的资源 access="hasanyrole('role1')" 表示只有role1这个角色可以访问资源 --> <security:intercept-url pattern="/" access="hasanyrole('role_user')"></security:intercept-url> <!-- 配置认证信息 login-page="/login.jsp" 自定义的登录页面 login-processing-url="/login" security中处理登录的要求 default-target-url="/home.jsp" 默认的跳转地址 authentication-failure-url="/failure.jsp" 登录失落败的跳转地址 --> <security:form-login login-page="/login.jsp" login-processing-url="/login" default-target-url="/home.jsp" authentication-failure-url="/failure.jsp" /> <!-- 配置退出的登录信息 --> <security:logout logout-url="/logout" logout-success-url="/login.jsp" /></security:http>2.认证界面匿名访问

前面配置的

登陆界面jspSpringSecurity实现自界说登录界面 Ruby

<security:intercept-url pattern="/" access="hasanyrole('role_user')"></security:intercept-url>

会使登录界面不可访问,以是我们须要方法

在这里插入图片描述

3.放过静态资源

同样的系统的 js css 等静态资源文件也会被对应的过滤器拦截,以是也须要方法

在这里插入图片描述

4.登录测试

启动做事我们访问登录试试

在这里插入图片描述

可以访问到,然后提交登录看看把稳表单设置

在这里插入图片描述

然后访问涌现了403缺点

在这里插入图片描述

三、关闭csrf拦截

  上面我们在账号和角色都精确的情形下,登录后涌现了 403缺点,缘故原由是由于 csrf过滤器拦截了,那为什么系统供应的登录界面没问题呢?缘故原由是如下

在这里插入图片描述

在系统供应的登录表单中隐蔽的有csrf干系的信息。
这时我们可以关闭csrf过滤器,来实现登录事情

在这里插入图片描述

重启做事再测试就可以了

在这里插入图片描述

四、csrf防护

  上面我们通过关闭csrf过滤器实现了认证功能,但是系统将面临csrf攻击的风险,以是我们须要放开做事,同时也要能够完成认证。
首先我们来看下CsrfFilter的源码

1.CsrfFilter源码查看

在这里插入图片描述

this.requireCsrfProtectionMatcher.matches(request)方法

在这里插入图片描述

通过 GET HEAD TRACE OPTIONS 提交的数据不会 csrf 验证

2.放开过滤器

前面关闭的我们须要放开

在这里插入图片描述

3.页面动态token

导入security标签

在这里插入图片描述

在表单中利用,浸染和下面的同等

在这里插入图片描述

:ajax办法提交的时候利用

五、注销功能

在home.jsp中添加注销链接

在这里插入图片描述

点击后涌现了404缺点缘故原由是:自定义的注销功能必须通过post办法提交才行,以是如下

在这里插入图片描述

在这里插入图片描述

涌现这个缘故原由是 csrf的缘故原由,加标签即可

在这里插入图片描述

搞定~