首页 > 其他分享 >01.Shiro基础概念以及快速入门

01.Shiro基础概念以及快速入门

时间:2023-12-29 11:44:08浏览次数:41  
标签:01 Realm 入门 用户 shiro apache org Shiro

概述

Apache Shiro 是一个功能强大且灵活的开源安全框架,可以干净地处理身份验证,授权,企业会话 Management 和加密。

Apache Shiro 的首要目标是易于使用和理解。安全有时可能非常复杂,甚至会很痛苦,但不一定如此。框架应尽可能掩盖复杂性,并公开干净直观的 API,以简化开发人员确保其应用程序安全的工作。

您可以使用 Apache Shiro 进行以下操作:

  • 验证用户身份以验证其身份

  • 对用户执行访问控制,例如:

  • 确定是否为用户分配了特定的安全角色

    • 确定是否允许用户做某事
  • 即使在没有 Web 或 EJB 容器的情况下,也可以在任何环境中使用 Session API。

  • 在身份验证,访问控制或会话的生存期内对事件做出反应。

  • 汇总 1 个或更多用户安全数据的数据源,并将其全部显示为单个复合用户“视图”。

  • 启用单点登录(SSO)功能

  • 启用“记住我”服务以进行用户关联而无需登录

    以及更多-所有这些都集成到一个易于使用的内聚 API 中。

Shiro 尝试在所有应用程序环境中实现这些目标-从最简单的命令行应用程序到最大的企业应用程序,而不必强加对其他第三方框架,容器或应用程序服务器的依赖。当然,该项目旨在尽可能地集成到这些环境中,但是可以在任何环境中直接使用它。

架构

shiro框架

开发时常用流程

常用核心组件

  • SecuritManager:管理整个shiro框架
    • 在springboot中使用:org.apache.shiro.web.mgt.DefaultWebSecurityManager
    • DefaultWebSecurityManager中可以设置Session、Cookie等
  • Subject:主体(可以理解为用户信息,即与服务器交互的主题)
    • 当执行Subject.login时会最终执行Realm.doGetAuthenticationInfo
  • Realm:认证时执行对应的代码逻辑
    • 内置了一些Realm(可以自行查看AuthorizingRealm的实现类),但实际使用时最好自定义。
    • 认证时会调用:doGetAuthenticationInfo
    • 授权时会调用:doGetAuthorizationInfo
  • CredentialsMatcher:身份匹配器
    • 默认的身份匹配器:org.apache.shiro.authc.credential.SimpleCredentialsMatcher
    • 默认的Realm在调用doGetAuthenticationInfo时会调用CredentialsMatcher.doCredentialsMatch
  • Filter:过滤器
    • 默认的过滤器:在org.apache.shiro.web.filter.mgt.DefaultFilter里面定义的;
    • 默认的过滤器链:org.apache.shiro.spring.web.config.DefaultShiroFilterChainDefinition
    • 在springboot中:使用ShiroFilterChainDefinition配置过滤链并将其与SecuritManager关联:org.apache.shiro.spring.web.ShiroFilterFactoryBean

认证授权流程

认证授权流程

快速入门

标签:01,Realm,入门,用户,shiro,apache,org,Shiro
From: https://www.cnblogs.com/xgc-mzl/p/17934243.html

相关文章

  • Docker安装sqlserver-2019(已做持久化)
    Docker安装sqlserver-2019一.新建挂载目录并赋权mkdirsqlservercdsqlservermkdir-p/data/mssql#给目录赋予写的权限,不然在容器启动的时候,文件无法挂载chmod-R777./data/mssql二.准备docker-compose文件#在预先创建的sqlserver目录下vidocker-compose.yml#写入......
  • JDBC快速入门:看我如何用JDBC数据库连接池,轻松解决大量并发请求问题!
    我们已经知道JDBC是Java语言中用来规范客户端程序如何访问数据库的应用程序接口,也是大多数Java开发者与数据库打交道的必备工具。但是,你是否知道,JDBC在处理大量并发请求时,可能会遇到一些问题?这就是我们今天要讨论的主题——JDBC数据库连接池。<br>首先,让我们来了解一下什么是数据......
  • Unreal入门,Timeline动画02,动态材质
    这里动态材质效果主要是利用Timeline生成随时间变化的颜色插值来实现1.创建动态材质实例变量,用于控制材质动态效果将返回值提升为变量MI_Frame注意这里都是在ConstructionScript中完成的回到事件图表,添加颜色插值以实现动态材质变化注意这里的变化参数来自于门框材质......
  • JDBC快速入门:看我如何用JDBC数据库连接池,轻松解决大量并发请求问题!
    我们已经知道JDBC是Java语言中用来规范客户端程序如何访问数据库的应用程序接口,也是大多数Java开发者与数据库打交道的必备工具。但是,你是否知道,JDBC在处理大量并发请求时,可能会遇到一些问题?这就是我们今天要讨论的主题——JDBC数据库连接池。首先,让我们来了解一下什么是数据库连......
  • 东北师范大学 计算机2010课程表
    东北师范大学 计算机学院(研究生)课程表2010学年春季学期班次       项目 星   节   期    次   2009年级       计算机软件与理论 专业  课            程学分教  师课程类别教室地点星期一......
  • 在不使用内置函数和中间变量的情况交换数字LeetCode力扣题解面试题16.01
    #异或法#Kotlin```KotlinclassSolution{  funswapNumbers(numbers:IntArray):IntArray{    numbers[0]=numbers[0]xornumbers[1]    numbers[1]=numbers[1]xornumbers[0]    numbers[0]=numbers[0]xor......
  • AT_joisc2015_h 题解
    传送门题意:给定长为\(n\)的字符串\(s\),你可以选择一个区间,将区间内的字符从小到大排序,求可以得到的最长回文子串长度,字符集大小为\(n\)。很有意思的题目。首先容易做到\(O(n^3)\)。考虑怎么优化。我们先考察排序的区间和回文区间的关系。如果两个区间无交,那么显然排序......
  • Unreal入门,Timeline动画01,开关门
    1.准备一张新地图选择基本地图即可导入第三人称资源包这里选择ThirdPerson创建基于BP_ThirdPersonGameMode和BP_ThirdPersonCharacter的蓝图BP_MyThirdPersonGameMode和BP_MyChar修改当前地图的默认GameMode和Pawn添加一个蓝图接口Interactable,以及一个无参数无返回......
  • 学期2023-2024-1 20231401 《计算机基础与程序设计》第十四周学习总结
    学期2023-2024-120231401《计算机基础与程序设计》第十四周学习总结作业信息这个作业属于哪个课程2023-2024-1-计算机基础与程序设计这个作业要求在哪里2023-2024-1计算机基础与程序设计第十四周作业这个作业的目标《C语言程序设计》第13章并完成云班课测试......
  • 2023-2024-1 20231301 《计算机基础与程序设计》第十四周学习总结
    2023-2024-120231301《计算机基础与程序设计》第十四周学习总结作业信息作业链接作业课程<班级>(2023-2024-1-计算机基础与程序设计)作业要求<作业>(2023-2024-1计算机基础与程序设计第十四周学习总结)作业目标<《C语言程序设计》预习第十三章>《C语言程序设......