spring security原理和机制 Spring Boot 35,正在准备面试

先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7

深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年最新大数据全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上大数据知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

如果你需要这些资料,可以添加V获取:vip204888 (备注大数据)
img

正文

SpringBoot学习路线总结(附思维导图)

Spring Boot入门篇 | Spring Boot 1

springboot增删改查 | Spring Boot 2

Thymeleaf的基本语法 | Spring Boot 3

springboot整合mybatis | Spring Boot 4

​​​​​​Spring Boot Jpa 的使用 | Spring Boot 5
springboot自定义starter | Spring Boot 6
springboot实现增删改查实例 | Spring Boot 7
Okhttp实现GitHub第三方登录 | Spring Boot 8
springboot整合mybatis实现增删改查 | Spring Boot 9
Spring Boot + mybatis + Thymeleaf 分页示例(纯底层代码,不是pagehelper)| Spring Boot 10
springboot怎么打包部署 | Spring Boot 11
springboot整合Redis | Spring Boot 12
springboot实现热部署 | Spring Boot 13
springboot启动类原理解析 | Spring Boot 14
springboot常用注解介绍及使用 | Spring Boot 15
ApplicationContextAware使用理解 | Spring Boot 16
Springboot配置两个数据库 | Spring Boot 17
springboot整合vue 实现CRUD | Spring Boot 18
springboot整合阿里云OSS实现云存储 | Spring Boot 19
springboot + Vue 整合阿里云视频点播 | Spring Boot 20
springboot部署 | Spring Boot 21
mybatis逆向工程 | Spring Boot 22
jdbctemplate使用 | Spring Boot 23
springboot 解决跨域问题 | Spring Boot 24
rabbitmq基础知识总结 | Spring Boot 25
Spring Boot整合easyExcel | Spring Boot 26
Spring Boot整合流控组件Sentinel | Spring Boot 27
springboot整合全文搜索引擎Elasticsearch | Spring Boot 28
springboot整合Nginx实现负载均衡反向代理 | Spring Boot 29
springboot整合MongoDB实现增删改查 | Spring Boot 30
ShardingSphere分库分表教程 | Spring Boot 31
spring security原理和机制 | Spring Boot 32
Redis是干什么的,Redis常用语法每日一练 | Spring Boot 33

ShardingSphere分库分表教程 | Spring Boot 34

spring security原理和机制 | Spring Boot 35
SpringBoot通过@Cacheable注解实现缓存功能 | Spring Boot 36

目录

一、SpringSecurity 框架简介

二、SpringSecurity与shiro

1、SpringSecurity特点

2、shiro特点

3、SpringSecurity与shiro总结

三、Spring Security过滤器

1、Spring Security中常见过滤器

2、15种过滤器

3、SpringSecurity 基本流程

4、SpringSecurity 认证流程

四、PasswordEncoder 接口

五、SpringBoot整合Spring Security入门

1、pom.xml

2、application.properties

3、SecurityConfig

4、启动类

5、User

6、UserService

7、UserMapper

8、UserController

六、微服务认证与授权实现思路

七、微服务代码实例

1、父工程pom.xml

2、common模块

3、common模块 -> SpringSecurity子模块

4、common模块 -> service_base

5、gateway模块

6、service模块


一、SpringSecurity 框架简介

Spring 是非常流行和成功的 Java 应用开发框架,Spring Security 正是 Spring 家族中的成员。Spring Security 基于 Spring 框架,提供了一套 Web 应用安全性的完整解决方案。
正如你可能知道的关于安全方面的两个主要区域是“认证”和“授权”(或者访问控制),一般来说,Web 应用的安全性包括用户认证(Authentication)和用户授权(Authorization)两个部分,这两点也是 Spring Security 重要核心功能。

1、用户认证指的是:验证某个用户是否为系统中的合法主体,也就是说用户能否访问该系统。用户认证一般要求用户提供用户名和密码。系统通过校验用户名和密码来完成认证过程。通俗点说就是系统认为用户是否能登录。

2、用户授权指的是验证某个用户是否有权限执行某个操作。在一个系统中,不同用户所具有的权限是不同的。比如对一个文件来说,有的用户只能进行读取,而有的用户可以进行修改。一般来说,系统会为不同的用户分配不同的角色,而每个角色则对应一系列的权限。通俗点讲就是系统判断用户是否有权限去做某些事情。

二、SpringSecurity与shiro

1、SpringSecurity特点

(1)和 Spring 无缝整合。

(2)全面的权限控制。

(3)专门为 Web 开发而设计。

  • 旧版本不能脱离 Web 环境使用。
  • 新版本对整个框架进行了分层抽取,分成了核心模块和 Web 模块。单独
  • 引入核心模块就可以脱离 Web 环境。
  • 重量级
2、shiro特点

Apache 旗下的轻量级权限控制框架。

(1)轻量级

Shiro 主张的理念是把复杂的事情变简单。针对对性能有更高要求的互联网应用有更好表现。

(2)通用性

好处:不局限于 Web 环境,可以脱离 Web 环境使用。

缺陷:在 Web 环境下一些特定的需求需要手动编写代码定制。

3、SpringSecurity与shiro总结

相对于 Shiro,在 SSM 中整合 Spring Security 都是比较麻烦的操作,所以,SpringSecurity 虽然功能比 Shiro 强大,但是使用反而没有 Shiro 多(Shiro 虽然功能没有Spring Security 多,但是对于大部分项目而言,Shiro 也够用了)。自从有了 Spring Boot 之后,Spring Boot 对于 Spring Security 提供了自动化配置方案,可以使用更少的配置来使用 Spring Security。因此,一般来说,常见的安全管理技术栈的组合是这样的:

(1)SSM + Shiro

(2)Spring Boot/Spring Cloud + Spring Security

以上只是一个推荐的组合而已,如果单纯从技术上来说,无论怎么组合,都是可以运行的。

三、Spring Security过滤器

1、Spring Security中常见过滤器
  1. FilterSecurityInterceptor:是一个方法级的权限过滤器, 基本位于过滤链的最底部。
  2. ExceptionTranslationFilter:是个异常过滤器,用来处理在认证授权过程中抛出的异常。
  3. UsernamePasswordAuthenticationFilter :对/login 的 POST 请求做拦截,校验表单中用户

名,密码。

2、15种过滤器

SpringSecurity 采用的是责任链的设计模式,它有一条很长的过滤器链。现在对这条过滤器链的 15 个过滤器进行说明:

(1) WebAsyncManagerIntegrationFilter:将 Security 上下文与 Spring Web 中用于处理异步请求映射的 WebAsyncManager 进行集成。

(2) SecurityContextPersistenceFilter:在每次请求处理之前将该请求相关的安全上下文信息加载到 SecurityContextHolder 中,然后在该次请求处理完成之后,将SecurityContextHolder 中关于这次请求的信息存储到一个“仓储”中,然后将SecurityContextHolder 中的信息清除,例如Session 中维护一个用户的安全信息就是这个过滤器处理的。

(3) HeaderWriterFilter:用于将头信息加入响应中。

(4) CsrfFilter:用于处理跨站请求伪造。

(5)LogoutFilter:用于处理退出登录。

(6)UsernamePasswordAuthenticationFilter:用于处理基于表单的登录请求,从表单中获取用户名和密码。默认情况下处理来自 /login 的请求。从表单中获取用户名和密码时,默认使用的表单 name 值为 username 和 password,这两个值可以通过设置这个过滤器的 usernameParameter 和 passwordParameter 两个参数的值进行修改。

(7)DefaultLoginPageGeneratingFilter:如果没有配置登录页面,那系统初始化时就会配置这个过滤器,并且用于在需要进行登录时生成一个登录表单页面。

(8)BasicAuthenticationFilter:检测和处理 http basic 认证。

(9)RequestCacheAwareFilter:用来处理请求的缓存。

(10)SecurityContextHolderAwareRequestFilter:主要是包装请求对象 request。

(11)AnonymousAuthenticationFilter:检测 SecurityContextHolder 中是否存在Authentication 对象,如果不存在为其提供一个匿名 Authentication。

(12)SessionManagementFilter:管理 session 的过滤器

(13)ExceptionTranslationFilter:处理 AccessDeniedException 和AuthenticationException 异常。

(14)FilterSecurityInterceptor:可以看做过滤器链的出口。

(15)RememberMeAuthenticationFilter:当用户没有登录而直接访问资源时, 从 cookie里找出用户的信息, 如果 Spring Security 能够识别出用户提供的 remember me cookie,用户将不必填写用户名和密码, 而是直接登录进入系统,该过滤器默认不开启。

3、SpringSecurity 基本流程

Spring Security 采取过滤链实现认证与授权,只有当前过滤器通过,才能进入下一个过滤器:

绿色部分是认证过滤器,需要我们自己配置,可以配置多个认证过滤器。认证过滤器可以使用 Spring Security 提供的认证过滤器,也可以自定义过滤器(例如:短信验证)。认证过滤器要在 configure(HttpSecurity http)方法中配置,没有配置不生效。

下面会重点介绍以下三个过滤器:
UsernamePasswordAuthenticationFilter 过滤器:该过滤器会拦截前端提交的 POST 方式的登录表单请求,并进行身份认证。Except

  • 26
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值