安全框架主要实现:

提示:认证和授权
例如:
1、 掌握认证和授权
2、 剖析源码


入门案例:

搭建一个springboot的web工程主要依赖如下:

Spring Security 开源协议是啥 spring security 源码解析_安全框架


编写一个测试接口:

Spring Security 开源协议是啥 spring security 源码解析_java_02


通过浏览器url访问该接口:

Spring Security 开源协议是啥 spring security 源码解析_java_03

默认登录用户:user

密码控制台打印的:

Spring Security 开源协议是啥 spring security 源码解析_自定义_04

Spring Security 开源协议是啥 spring security 源码解析_数据库_05


这样就完成了一个简单的入门级demo。

security的基本原理:

security的本质上一个过滤器链:

重点是三个过滤器:

(1)FilterSecurityInterceptor::是一个方法级的权限过滤器, 基本位于过滤链的最底部。

查看源码得知该类实现了Filter说明该类是一个过滤器:

Spring Security 开源协议是啥 spring security 源码解析_数据库_06


super.beforeInvocation(fi) 表示查看之前的 filter 是否通过。

fi.getChain().doFilter(fi.getRequest(), fi.getResponse());表示真正的调用后台的服务。

(2)ExceptionTranslationFilter:是个异常过滤器,用来处理在认证授权过程中抛出的异常

Spring Security 开源协议是啥 spring security 源码解析_自定义_07


(3)UsernamePasswordAuthenticationFilter :对/login 的 POST 请求做拦截,校验表单中用户

名,密码。

Spring Security 开源协议是啥 spring security 源码解析_安全框架_08

security的过滤器怎么进行加载的:

通过FilterChainProxy加载到一个list中去的。

如何实现在数据库中查询接口:

(1)UserDetailsService 接口讲解

当什么也没有配置的时候,账号和密码是由 Spring Security 定义生成的。而在实际项目中
账号和密码都是从数据库中查询出来的。 所以我们要通过自定义逻辑控制认证逻辑。如果需要自定义逻辑时,只需要实现 UserDetailsService 接口即可。

*创建类继承UsernamePasswordAuthenticationFilter,重写三个方法
*创建类实现UserDetailService,编写查询数据过程,返回User对象,这个User对象是安全框架提供对象。

(2)PasswordEncoder 接口讲解

提供密码加密。

web权限方案

(1)认证
(2)授权

设置登录系统的账号、密码
方式一:在 application.properties

Spring Security 开源协议是啥 spring security 源码解析_数据库_09


Spring Security 开源协议是啥 spring security 源码解析_自定义_10


Spring Security 开源协议是啥 spring security 源码解析_自定义_11

方式二:编写类实现接口

Spring Security 开源协议是啥 spring security 源码解析_自定义_12


注意必须将passwordEncoder注入进来,因为会去找里面的对象。

Spring Security 开源协议是啥 spring security 源码解析_自定义_13

方式三:实现数据库认证来完成用户登录(自定义)

Spring Security 开源协议是啥 spring security 源码解析_自定义_14

Spring Security 开源协议是啥 spring security 源码解析_自定义_15

Spring Security 开源协议是啥 spring security 源码解析_数据库_16


Spring Security 开源协议是啥 spring security 源码解析_数据库_17

数据库查询完成数据库操作:

引入依赖:

Spring Security 开源协议是啥 spring security 源码解析_自定义_18


配置mappersacn扫描包

Spring Security 开源协议是啥 spring security 源码解析_安全框架_19


编写这个服务:

Spring Security 开源协议是啥 spring security 源码解析_安全框架_20


该方法是通过名字查询出该用户

Spring Security 开源协议是啥 spring security 源码解析_自定义_21

Spring Security 开源协议是啥 spring security 源码解析_自定义_22

Spring Security 开源协议是啥 spring security 源码解析_数据库_23