学Spring security ,从零开始,这一篇就够了!!

Spring security 从零开始

  • Spring security的简单介绍
    • 是什么
    • 为什么
    • 怎么样
  • Spring security在使用前必须了解的知识
    • 框架的基本设计模式
    • 框架处理流程
    • 框架核心类之间的关系:
  • 上手使用该框架

Spring security的简单介绍

是什么

官方解答(摘自某百科):Spring Security是一个能够为基于Spring的企业应用系统提供声明式的安全访问控制解决方案的安全框架。它提供了一组可以在Spring应用上下文中配置的Bean,充分利用了Spring IoC,DI(控制反转Inversion of Control ,DI:Dependency Injection 依赖注入)和AOP(面向切面编程)功能,为应用系统提供声明式的安全访问控制功能,减少了为企业系统安全控制编写大量重复代码的工作。

简单理解:Spring Security可以根据使用者的需要定制相关的角色身份和身份所具有的权限,完成黑名单操作拦截无权限的操作等等。

为什么

大部分web应用都存在用户认证和用户权限等应用场景,因此Spring Security的作用是提供了一个完整的思路和一套完整的框架来满足用户实现这个应用场景的需求。重复制造轮子是罪恶的。

怎么样

那么有Spring Security这套框架我们能实现一些什么呢?看下图即可:
学Spring security ,从零开始,这一篇就够了!!_第1张图片

Spring security在使用前必须了解的知识

(注意:很多初学者就是没了解这些前提知识,导致觉得这套框架太复杂从而放弃,不论这部分有多么生硬都请看下去!会为你后面的使用省去很多时间!)

框架的基本设计模式

Java Servlet 和 Spring Security 都使用了设计模式中的 责任链模式 。简单地说,它们都定义了许多过滤器(Filter),每一个请求都会经过层层过滤器的处理,最终返回。如下图:
学Spring security ,从零开始,这一篇就够了!!_第2张图片
其中,Spring Security 在 Servlet 的过滤链(filter chain)中注册了一个过滤器 FilterChainProxy,它会把请求代理到 Spring Security 自己维护的多个过滤链,每个过滤链会匹配一些 URL,如图中的 /foo/**,如果匹配则执行对应的过滤器。过滤链是有顺序的,一个请求只会执行第一条匹配的过滤链。

框架处理流程

既然我们用这个框架是需要解决用户鉴定和用户授权等应用场景的,那么从框架处理流程入手,可以快速让我们了解这个框架的内容

学Spring security ,从零开始,这一篇就够了!!_第3张图片

框架核心类之间的关系:

当了解完了该框架的设计模式和处理流程后,我们进一步看看该框架是用了哪些核心类来完成以上功能的(这里不需要完全看懂,你也应该不能完全看懂,在后面实现具体功能时弄不清类之间的关系了,就回来看这个图)。学Spring security ,从零开始,这一篇就够了!!_第4张图片

上手使用该框架

因为已经有许多大佬写了相关实现的博客了,所以我在下面给出链接即可:

https://juejin.im/post/5d0cde1fe51d45775746b953
这位大神写得非常通俗易懂,功能从简单到复杂,适合新手入手。但是该博客没有用JWT也没有链接到数据库,功能略有不足。

https://www.cnblogs.com/xz816111/p/8528896.html
这位大神从该框架的核心类之间的关系出发,讲述了整个用户验证和授权的流程。代码也非常详细和简单。

https://www.jianshu.com/p/32fa221e03b7
这个大神直接手撕源码,如果你对于该框架核心类的具体实现感兴趣,那么别错过它。

https://lotabout.me/2019/Token-Authentication-via-Spring-Security/
这个大神以高度概括的方式介绍了该框架,但是因为概括程度比较高,所以也不太适合新手看,建议当你有一定了解后再看该博客。

你可能感兴趣的:(Spring)