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框架的基本概念,和它的认证流程。虽然,我们没涉及到代码,但是我觉得认知这方面还得要完善一下,不然写代码,都不知道那玩意干啥的。所以大家写代码的时候,不要依葫芦画瓢, 要理解的情况下去写,不然很容易忘记。


下期预告

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

相关文章
|
6月前
|
缓存 安全 Java
Shiro框架以及Spring Boot整合Shiro
Shiro框架以及Spring Boot整合Shiro
Shiro框架以及Spring Boot整合Shiro
|
2月前
|
安全 Java Apache
SpringBoot+Shiro(一)
SpringBoot+Shiro(一)
|
22天前
|
安全 Java 数据库
shiro学习一:了解shiro,学习执行shiro的流程。使用springboot的测试模块学习shiro单应用(demo 6个)
这篇文章是关于Apache Shiro权限管理框架的详细学习指南,涵盖了Shiro的基本概念、认证与授权流程,并通过Spring Boot测试模块演示了Shiro在单应用环境下的使用,包括与IniRealm、JdbcRealm的集成以及自定义Realm的实现。
34 3
shiro学习一:了解shiro,学习执行shiro的流程。使用springboot的测试模块学习shiro单应用(demo 6个)
|
29天前
|
Java API Apache
Springboot+shiro,完整教程,带你学会shiro
这篇文章提供了一个完整的Apache Shiro与Spring Boot结合使用的教程,包括Shiro的配置、使用以及在非Web和Web环境中进行身份验证和授权的示例。
54 2
Springboot+shiro,完整教程,带你学会shiro
|
29天前
|
前端开发 Java Apache
Springboot整合shiro,带你学会shiro,入门级别教程,由浅入深,完整代码案例,各位项目想加这个模块的人也可以看这个,又或者不会mybatis-plus的也可以看这个
本文详细讲解了如何整合Apache Shiro与Spring Boot项目,包括数据库准备、项目配置、实体类、Mapper、Service、Controller的创建和配置,以及Shiro的配置和使用。
209 1
Springboot整合shiro,带你学会shiro,入门级别教程,由浅入深,完整代码案例,各位项目想加这个模块的人也可以看这个,又或者不会mybatis-plus的也可以看这个
|
1天前
|
JavaScript NoSQL Java
CC-ADMIN后台简介一个基于 Spring Boot 2.1.3 、SpringBootMybatis plus、JWT、Shiro、Redis、Vue quasar 的前后端分离的后台管理系统
CC-ADMIN后台简介一个基于 Spring Boot 2.1.3 、SpringBootMybatis plus、JWT、Shiro、Redis、Vue quasar 的前后端分离的后台管理系统
16 0
|
22天前
|
NoSQL Java Redis
shiro学习四:使用springboot整合shiro,正常的企业级后端开发shiro认证鉴权流程。使用redis做token的过滤。md5做密码的加密。
这篇文章介绍了如何使用Spring Boot整合Apache Shiro框架进行后端开发,包括认证和授权流程,并使用Redis存储Token以及MD5加密用户密码。
21 0
shiro学习四:使用springboot整合shiro,正常的企业级后端开发shiro认证鉴权流程。使用redis做token的过滤。md5做密码的加密。
|
3月前
|
SQL Java 数据库连接
springboot+mybatis+shiro项目中使用shiro实现登录用户的权限验证。权限表、角色表、用户表。从不同的表中收集用户的权限、
这篇文章介绍了在Spring Boot + MyBatis + Shiro项目中,如何使用Shiro框架实现登录用户的权限验证,包括用户、角色和权限表的设计,以及通过多个表查询来收集和验证用户权限的方法和代码实现。
springboot+mybatis+shiro项目中使用shiro实现登录用户的权限验证。权限表、角色表、用户表。从不同的表中收集用户的权限、
|
3月前
|
SQL 前端开发 Java
springboot项目中使用shiro实现用户登录以及权限的验证
这篇文章详细介绍了如何在Spring Boot项目中集成Apache Shiro框架来实现用户登录和权限验证,包括项目依赖配置、数据库连接、实体类定义、控制器、服务层、Mapper层以及前端页面的实现,并展示了实际效果和过滤器代码。
springboot项目中使用shiro实现用户登录以及权限的验证
|
3月前
|
NoSQL 安全 Java
Java Spring Boot中使用Shiro、JWT和Redis实现用户登录鉴权
Java Spring Boot中使用Shiro、JWT和Redis实现用户登录鉴权