SpringBoot进阶之整合Shiro鉴权框架(一)

简介: SpringBoot进阶之整合Shiro鉴权框架(一)

前言

大家好,一直以来我都本着用最通俗的话理解核心的知识点, 我认为所有的难点都离不开 基础知识 的铺垫。目前正在出一个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框架的基本概念,和它的认证流程。虽然,我们没涉及到代码,但是我觉得认知这方面还得要完善一下,不然写代码,都不知道那玩意干啥的。所以大家写代码的时候,不要依葫芦画瓢, 要理解的情况下去写,不然很容易忘记。


下期预告

下期就带大家正式进入代码实践环节,带大家整一下, 我们下期不见不散 ~ 关注我,不迷路

相关文章
|
1月前
|
缓存 安全 Java
Shiro框架以及Spring Boot整合Shiro
Shiro框架以及Spring Boot整合Shiro
Shiro框架以及Spring Boot整合Shiro
|
1月前
|
安全 算法 Java
SpringBoot+JWT+Shiro+MybatisPlus实现Restful快速开发后端脚手架
SpringBoot+JWT+Shiro+MybatisPlus实现Restful快速开发后端脚手架
63 0
|
1月前
|
开发框架 安全 Java
【Java专题_01】springboot+Shiro+Jwt整合方案
【Java专题_01】springboot+Shiro+Jwt整合方案
75 0
|
1月前
|
Java 关系型数据库 MySQL
Shiro实战+springboot集成
Shiro实战+springboot集成
49 0
|
1月前
|
前端开发 Java 关系型数据库
【Shiro】Springboot集成Shiro
【Shiro】Springboot集成Shiro
59 1
|
1月前
|
Java
springboot如何配置使用shiro
【1月更文挑战第11天】springboot如何配置使用shiro
20 2
|
1月前
|
存储 Java 数据库
SpringBoot+JWT+Shiro
SpringBoot+JWT+Shiro
38 0
|
1月前
|
存储 JSON 安全
使用shiro对数据库中的密码进行加密存储(java+springboot+shiro)
使用shiro对数据库中的密码进行加密存储(java+springboot+shiro)
121 0
|
1月前
|
前端开发 Java Spring
使用Spring Boot集成Shiro时出现了无法注入Service的问题
使用Spring Boot集成Shiro时出现了无法注入Service的问题
|
1月前
|
Java
Springboot整合之Shiro和JWT技术实现无感刷新9
Springboot整合之Shiro和JWT技术实现无感刷新9