Shiro框架简单——解析

发布时间:2026/10/23 21:27:18

Shiro框架简单——解析 #Java#后端开发#Shiro1Shiro是什么shiro是一个轻量级java,安全框架轻量级、简单、易上手不依赖 Spring可独立运行提供身份验证授权加密和会话管理等可以集成到任何程序上便于快速开发无默认 CSRF、OAuth2、OIDC需要自己集成。2Shiro核心三大组件Subject(用户)------SecurityManage安全管理器------Realm(数据源/认证授权)下面详细解析一下这三个的作用2.1 Subject用户代表当前用户。Subject 封装了用户的全部信息包含用户ID、账户(userId,username)、完整用户对象菜单权限集合部门id。只要是当前用户相关数据都可以存进Subject的Session中。在一个应用程序中可能有多个 Subject每个 Subject 可以访问应用程序中的资源。用户可以通过 Subject 登录应用程序并执行诸如访问资源、修改个人配置等操作。Shiro 提供了简单易用的方法来管理用户的登录和退出行为。subject一般分为两种数据一是必须存的身份权限认证状态等二是手动存任意数据经常是session存扩展数据。例如下方Subject subject SecurityUtils.getSubject(); Session session subject.getSession(); // 存任意数据 session.setAttribute(key, value);2.2 SecurityManage会话管理器-中央调度器所有功能的调度中心 。包含认证器、授权器、会话管理器、缓存管理器。所有 Subject 的操作登录、判断权限、session、缓存最终全部交给 SecurityManager 执行。Subject.login(token) → 本质调用 SecurityManager.login(subject, token)SecurityManager顶层接口 ↓ AuthenticatorSecurityManager支持认证 ↓ AuthorizerSecurityManager支持认证授权 ↓ CachingSecurityManager支持缓存 ↓ RealmSecurityManager支持Realm ↓ DefaultSecurityManager默认完整实现 ↓ WebSecurityManagerWeb环境实现核心功能是所有安全操作最终都由 SecurityManager 统一调度• 登录 → 交给 Authenticator• 权限 → 交给 Authorizer• 会话 → 交给 SessionManager• 数据 → 交给 Realm• 优化 → 交给 CacheManager登录流程1. Subject.login(token) --- 2. 委托给 SecurityManager.login(subject, token)--- 3. 调用 Authenticator.authenticate(token) ---4. 遍历所有 Realm--- 5. 执行 realm.doGetAuthenticationInfo()--- 6. 比对密码CredentialsMatcher----- 7. 生成 Subject 上下文 -----8. 保存到 Session权限认证1. Subject.isPermitted() ---2. 委托给 SecurityManager---- 3. 调用 Authorizer----- 4. 调用 realm.doGetAuthorizationInfo()----- 5. 匹配权限 -----6. 返回 true/falseSecurityManage最核心是全局只有一个类似配置中心所有的Subject都是通过SecurityManage来通过真正的安全入口。2.3 Realm数据源Shiro和数据源的通道。实现两个方法1. doGetAuthenticationInfo()认证登录2. doGetAuthorizationInfo()授权权限Subject.isPermitted() → Authorizer → Realm 查询权限 → 匹配
延伸阅读

更多相关文章

2026/10/23 21:33:01

3分钟把游戏画面变回老电视:CRT-Royale 滤镜实用指南

3分钟把游戏画面变回老电视:CRT-Royale 滤镜实用指南 【免费下载链接】crt-royale-reshade A port of crt-royale from libretro to ReShade 项目地址: https://gitcode.com/gh_mirrors/cr/crt-royale-reshade CRT-Royale 滤镜是一套基于 ReShade 的 CRT 复古…

2026/10/23 21:54:58

手把手教你搭建 go frame 2.x版本微服务

Go Frame介绍 GoFrame 是一款模块化、高性能的Go 语言开发框架。无论是组件库、单体服务、微服务都可以使用GoFrame来编写;GoFrame 提供开箱即用、丰富强大的基础组件库; 可根据代码结构自动生成清晰、规范的接口文档,节省人工编写时间&#…

2026/10/23 22:24:10

WebToEpub 完整指南:快速把网页小说转成 EPUB 离线阅读

WebToEpub 完整指南:快速把网页小说转成 EPUB 离线阅读 【免费下载链接】WebToEpub A simple Chrome (and Firefox) Extension that converts Web Novels (and other web pages) into an EPUB. 项目地址: https://gitcode.com/gh_mirrors/we/WebToEpub 你是不…

2026/10/24 5:18:36

进程与线程揭秘:从基础到实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/24 5:18:36

05支部建在连上:组织能力为什么比战略更重要

毛选与企业管理系列文章05|组织管理篇(上)企业发展到一定规模,老板们几乎都会遇到同一个困惑:公司越来越大,人越来越多,事情反而越来越难推。一个决定,要过三个部门,开两…

2026/10/24 5:18:36

动态规划在餐饮优化中的应用:UVa 11633解析

1. 项目背景与问题定义UVa 11633 "Food Portion Size"是弗吉尼亚大学计算机科学系在算法课程中使用的经典编程题目,属于动态规划(Dynamic Programming)领域的典型应用场景。这道题目模拟了餐饮行业中的实际经营问题——如何通过科学…

2026/10/23 22:56:35

金融AI落地指南:从调研报告到技术选型与工程实践

简介:这份PDF报告聚焦2025年金融服务业中国AI现状与趋势,面向金融科技从业者、AI战略规划人员及关注行业数字化转型的研究者,帮助读者把握生成式AI在银行、支付、交易等场景中的落地路径与投资方向。资源包内含1个PDF文件,大小约1…

2026/10/24 0:02:40

MATLAB缩进快捷键与批量格式化实战指南

1. 被自动缩进折磨的那些年如果你写过MATLAB代码,大概率经历过这种场景:从某个文档、网页或者聊天记录里复制了一段代码,粘贴进编辑器之后,每一行前面都带着莫名其妙的空格,有的行首是四个空格,有的是一个T…

2026/10/24 0:02:40

用Poco实现Qt风格信号与槽的跨平台C++方案

简介:本资源是一份面向C中级开发者的技术实践工程,聚焦于在非Qt框架环境下模拟实现Qt核心通信机制——信号与槽,借助Poco网络库的事件系统完成解耦式对象通信。适用于需在跨平台C项目中引入松耦合回调机制、但受限于无法集成Qt依赖的开发场景…

2026/10/24 0:02:40

ESXi裸机虚拟化安装指南:从硬件兼容到虚拟机部署

1. 为什么还要折腾ESXi:从一台闲置机器说起手里攒了几台淘汰下来的迷你主机,配置不算差,i5加16G内存,扔了可惜,装个桌面系统又觉得浪费。这种场景下,ESXi就成了一个绕不开的选择。它是一套裸机虚拟化平台&a…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑