主要内容
-
Spring Security 简介
-
第一个Spring Security项目
-
UserDetailsService详解
-
PasswordEncoder密码解析器详解
-
自定义登录逻辑
-
自定义登录页面
-
认证过程其他常用配置
-
访问控制url匹配
-
内置访问控制方法介绍
10.角色权限判断
11.自定义403处理方案
12.基于表达式的访问控制
13.基于注解的访问控制
14.RememberMe功能实现
15.Thymeleaf中Spring Security使用
16.退出登录
17.Spring Security 中CSRF
学习目标
知识点 | 要求 |
---|---|
Spring Security 简介 | 掌握 |
第一个Spring Security项目 | 掌握 |
UserDetailsService详解 | 掌握 |
PasswordEncoder密码解析器详解 | 掌握 |
自定义登录逻辑 | 掌握 |
自定义登录页面 | 掌握 |
认证过程其他常用配置 | 掌握 |
访问控制url匹配 | 掌握 |
内置访问控制方法介绍 | 掌握 |
角色权限判断 | 掌握 |
自定义403处理方案 | 掌握 |
基于表达式的访问控制 | 掌握 |
基于注解的访问控制 | 掌握 |
Remember Me 功能实现 | 掌握 |
Thymeleaf中Spring Security使用 | 掌握 |
退出登录 | 掌握 |
CSRF | 掌握 |
一、Spring Security简介
1.概括
Spring Security是一个高度自定义的安全框架。利用Spring IoC/DI和AOP功能,为系统提供了声明式安全访问控制功能,减少了为系统安全而编写大量重复代码的工作。
使用Spring Secruity的原因有很多,但大部分都是发现了javaEE的Servlet规范或EJB规范中的安全功能缺乏典型企业应用场景。同时认识到他们在WAR或EAR级别无法移植。因此如果你更换服务器环境,还有大量工作去重新配置你的应用程序。使用Spring Security 解决了这些问题,也为你提供许多其他有用的、可定制的安全功能。
正如你可能知道的两个应用程序的两个主要区域是“认证”和“授权”(或者访问控制)。这两点也是Spring Security重要核心功能。“认证”,是建立一个他声明的主体的过程(一个“主体”一般是指用户,设备或一些可以在你的应用程序中执行动作的其他系统),通俗点说就是系统认为用户是否能登录。“授权”指确定一个主体是否允许在你的应用程序执行一个动作的过程。通俗点讲就是系统判断用户是否有权限去做某些事情。
2.历史
Spring Security 以“The Acegi Secutity System for Spring” 的名字始于2003年年底。其前身为acegi项目。起因是Spring开发者邮件列表中一个问题,有人提问是否考虑提供一个基于Spring的安全实现。限制于时间问题,开发出了一个简单的安全实现,但是并没有深入研究。几周后,Spring社区中其他成员同样询问了安全问题,代码提供给了这些人。2004年1月份已经有20人左右使用这个项目。随着更多人的加入,在2004年3月左右在sourceforge中建立了一个项目。在最开始并没有认证模块,所有的认证功能都是依赖容器完成的,而acegi则注重授权。但是随着更多人的使用,基于容器的认证就显现出了不足。acegi中也加入了认证功能。大约1年后acegi成为Spring子项目。
在2006年5月发布了acegi 1.0.0版本。2007年底acegi更名为Spring Security。
二、第一个Spring Security项目
1.导入依赖
Spring Security已经被Spring boot进行集成,使用时直接引入启动器即可。
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-security</artifactId> </dependency>
2.访问页面
导入spring-boot-starter-security启动器后,Spring Security已经生效,默认拦截全部请求,如果用户没有登录,跳转到内置登录页面。
在项目中新建login.html页面后
在浏览器输入:http://localhost:8080/login.html后会显示下面页面
默认的username为user,password打印在控制台中。当然了,每个人显示的肯定和我的不一样。
在浏览器中输入账号和密码后会显示login.html页面内容。