SpringSecurity实现自定义登录界面

 前面通过入门案例介绍,我们发现在SpringSecurity中如果我们没有使用自定义的登录界面,那么SpringSecurity会给我们提供一个系统登录界面 。但真实项目中我们一般都会使用自定义的登录界面,本文我们就来介绍下如何实现该操作 。
注意:本文是在入门案例代码的基础上演示的!
一、页面准备我们准备如下相关的jsp页面
1.login.jsp页面<%--Created by IntelliJ IDEA.User: dengpDate: 2019/12/1Time: 20:40To change this template use File | Settings | File Templates.--%><%@ page contentType="text/html;charset=UTF-8" language="JAVA" %><html><head><title>Title</title></head><body><h1>登录管理</h1><form>账号:<input type="text" name="username"><br>密码:<input type="password" name="password"><br><input type="submit" value=https://www.isolves.com/it/cxkf/kj/2021-12-06/"登录">
SpringSecurity实现自定义登录界面
2.home.jsp页面<%@ page contentType="text/html;charset=UTF-8" language="java" %><html><head><title>Title</title></head><body><h1>home界面</h1></body></html>3.其他页面

SpringSecurity实现自定义登录界面

文章插图
 
在这里插入图片描述
二、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.认证界面匿名访问前面配置的
<security:intercept-url pattern="/**" access="hasanyrole('role_user')"></security:intercept-url>会使登录界面不可访问,所以我们需要方法
SpringSecurity实现自定义登录界面

文章插图
 
在这里插入图片描述
3.放过静态资源同样的系统的 js css 等静态资源文件也会被对应的过滤器拦截,所以也需要方法
SpringSecurity实现自定义登录界面

文章插图
 
在这里插入图片描述
4.登录测试启动服务我们访问登录试试
SpringSecurity实现自定义登录界面

文章插图
 
在这里插入图片描述
可以访问到,然后提交登录看看
注意表单设置
SpringSecurity实现自定义登录界面

文章插图
 
在这里插入图片描述
然后访问出现了403错误
SpringSecurity实现自定义登录界面

文章插图
 
在这里插入图片描述
三、关闭csrf拦截  上面我们在账号和角色都正确的情况下,登录后出现了 403错误,原因是因为 csrf过滤器拦截了,那为什么系统提供的登录界面没问题呢?原因是如下
SpringSecurity实现自定义登录界面

文章插图
 
在这里插入图片描述
在系统提供的登录表单中隐藏的有csrf相关的信息 。这时我们可以关闭csrf过滤器,来实现登录工作
SpringSecurity实现自定义登录界面

文章插图
 
在这里插入图片描述
重启服务再测试就可以了
SpringSecurity实现自定义登录界面

文章插图
 
在这里插入图片描述
四、csrf防护  上面我们通过关闭csrf过滤器实现了认证功能,但是系统将面临csrf攻击的风险,所以我们需要放开服务,同时也要能够完成认证 。首先我们来看下CsrfFilter的源码
1.CsrfFilter源码查看


推荐阅读