前言
大家好,一直以来我都本着用最通俗的话理解核心的知识点, 我认为所有的难点都离不开 基础知识 的铺垫。目前正在出一个SpringBoot
长期系列教程,从入门到进阶, 篇幅会较多~
适合人群
- 学完Java基础
- 想通过Java快速构建web应用程序
- 想学习或了解SpringBoot
- SpringBoot进阶学习
大佬可以绕过 ~
背景
如果你是一路看过来的,很高兴你能够耐心看完。之前带大家学了Springboot
基础部分,对基本的使用有了初步的认识, 接下来的几期内容将会带大家进阶使用,会先讲解基础中间件
的使用和一些场景的应用,或许这些技术你听说过,没看过也没关系,我会带大家一步一步的入门,耐心看完你一定会有收获
~
情景回顾
上期带大家学习了MyBatis的事务操作
以及可能遇到的事务并发问题, 本期将带大家学习新的知识,如何对项目资源进行安全方面的管理,本期将会对Shiro框架
进行讲解,计划分为多期去学习。同样的,我们集成到Springboot
中。最近github可能会被墙,所以我把源码放到了国内gitee上,本节我们依然使用上期的代码
项目源码(持续更新⭐️)
是啥
学习新的一门知识之前,先去对它有一个完全的认知。本期不会涉及代码实践,主要给大家讲一下理论方面的。首先,我们来看一下,它到底是个啥玩意❓
Apache Shiro™ is a powerful and easy-to-use Java security framework that performs authentication, authorization, cryptography, and session management. With Shiro’s easy-to-understand API, you can quickly and easily secure any application – from the smallest mobile applications to the largest web and enterprise applications
官方意思说, Shiro是一个强大且易用的Java安全框架,能够用于身份验证、授权、加密和会话管理。Shiro拥有易于理解的API,您可以快速、轻松地
获得任何应用程序——从最小的移动应用程序到最大的网络和企业应用程序
我们从中可以知道,它构建起来很方便,功能也很强大,主要用于安全方面。
为什么要使用它❓
我们在引入一个新技术的时候,我们要清除的明白,它能给我们的项目解决什么难点, 这里给大家举例:
- 可以用于身份验证
- 赋予用户不同角色下的操作权限
- 它可以使用
Session Api
, 可以对Session(会话机制) 生命周期进行管理
- 可以对特定资源进行访问控制,包含静态资源和接口资源, 可以对响应内容进行控制
- 我们可以利用它实现
单点(sso)
登录
上边只是举了一些常遇到的场景,还有很多功能...
那么问题来了,开源框架不止它一个,还有一个比较火的框架是Spring Security
, 这个框架稍微复杂一点, 就是有点重
, 功能还是很完善的,也很强大。那么为什么要选择Shiro
呢❓给大家总结一下它的优点,之前我们也提到过:
简单,易上手
一个框架的方便
能够降低我们的开发难度,提高开发效率,也方便维护功能,全面
功能齐全,保障了系统在后期建设中,有一定的保障灵活 & 低耦合
它的依赖很少,很方便的集成到各个应用程序中, 也可以和其它框架很好的整合,方便我们去管理,而且还可扩展
四大组件
在Shiro
中,有四大核心组件:
Authentication(认证)
:用户身份识别,通常被称为用户“登录”Authorization(授权)
:访问控制。比如某个用户是否具有某个操作的使用权限。Session Management(会话管理)
:特定于用户的会话管理,甚至在非web 或 EJB 应用程序。Cryptography(加密)
:在对数据源使用加密算法加密的同时,保证易于使用。
在后边的代码实践中,你将会遇到它们~
说一下它的工作机制
这里大家可以好好了解一下,如果面试,你项目中使用了这个框架,很有可能会被问到~,说工作原理
之前,先给大家介绍几个小弟
Shiro
架构包含三个主要的理念:Subject,SecurityManager和 Realm
Subject
:当前用户,这里的用户可以是任何化身
,为什么这么说❓其实说的更确切一点是当前发生的事件SecurityManager
:管理所有Subject,SecurityManager 是 Shiro 架构的核心,配合内部安全组件共同组成安全伞Realms:
用于进行权限信息的验证,有开发者自行定义。在配置 Shiro 的时候,你必须指定至少一个Realm 来实现认证
或授权
, 也就是说这里是我们比较关心的地方,因为这里涉及到鉴权逻辑,同时涉及到用户信息数据,后边会带大家进行各种实战,带大家体验一下
我们需要实现Realms
的Authentication 和 Authorization。其中 Authentication 是用来验证用户身份
,Authorization 是授权访问控制
,用于对用户进行的操作授权,证明该用户是否允许进行当前操作,如访问某个链接,某个资源文件等
其实到这里,我们大体流程应该明白了:
创建SecurityManager
-> 提交主体认证
-> SecurityManager认证
-> Authenticator认证
-> Realm认证
上边是它的一个大体流程, 流程很简单,复杂的是我们自己实现的那部分业务逻辑
, 其实Shiro
它的Api
很少
结束语
本期内容就到这里结束了,总结一下, 本节主要讲了Shiro
框架的基本概念,和它的认证流程。虽然,我们没涉及到代码,但是我觉得认知这方面还得要完善一下,不然写代码,都不知道那玩意干啥的。所以大家写代码的时候,不要依葫芦画瓢, 要理解的情况下去写,不然很容易忘记。
下期预告
下期就带大家正式进入代码实践环节,带大家整一下, 我们下期不见不散 ~ 关注我,不迷路