一、课程介绍
1.1 Spring Security介绍:认证、权限拦截、数据库、权限缓存以及自定义决策
1.2 环境搭建和使用
二、spring Security的架构
三、Spring Security的权限拦截
3.1 Spring Security拦截器的处理过程
spring security提供了很多的过滤器,拦截servlet请求,将这些请求转交给认证管理器和访问决策管理器,并强制安全性
3.2 spring security的常见filter
3.2.1 率先执行的过滤器,判断用户的session是否已经存在securityContext的上下文中,如果存在则把securityContext拿出来,放在SecurityContextHolder中,供其它部分使用。
过滤器的顶端,第一个起作用的过滤器
3.2.2 LogoutFilter
3.2.3 AbstractAuthenticationProcessingFilter:处理form登陆的过滤器
3.2.4 DefaultLoginPageGeneratingFilter :生成默认的登陆页面
3.2.5 BasicAuthenticationFilter:
3.2.6 其它
Spring Security的常见过滤器
四、Spring Security的数据库管理
当使用数据库管理用户时,我们需要手动实现UserDetailService中的loadUserByUsername()方法
loadUserByUsername()返回的UserDetail对象,其中包含了当前用户的权限集合
五、Spring Security的权限缓存
UserDetailService缓存
六、Spring Security的自定义决策
七、Case:Spring Boot+Spring Security
7.1 搭建spring boot环境
7.2 引入spring-security的依赖包,此时访问controller,就需要输入用户名密码来访问
测试Controller如下
此时访问url就需要输入用户名密码
7.3 对访问策略进行配置
对http请求的策略配置
对静态资源的策略配置
八、Spring Security的常见Case
8.1 只要能登陆即可:网页是记录项目里的工具等,安全性要求不高。只要组内同事能登陆即可
ADMIN用户只要登陆即可访问,zhouzhou是基于角色的,然后在Controller中添加如下的注解
九、数据库管理用户
定义实现UserDetaisService的类,其中返回一个UserDetails对象,UserDetails对象有如下的实现类
UserDetail的实现,其中需要如下的字段。密码需要自定义校验规则
自定义密码的校验规则
设置校验时定义的UserDetailService类,同时设定密码校验的类
十、总结
10.1 优点
优点
10.2 缺点