Java学习第八十一部分——Shiro

目录

📫 一、前言提要简介

🛡️ 二、核心功能介绍

⚙️ 三、核心架构组件

☕ 四、与Java的关系

⚖️ 五、与Spring Security对比

🧩 六、典型应用场景

💎 七、总结归纳概述


📫 一、前言提要简介

       Apache Shiro 是一个强大且易用的Java 安全框架​,由 Apache 软件基金会维护,专为 Java 平台设计,提供全面的安全管理功能。

🛡️ 二、核心功能介绍

1.​​身份认证(Authentication)​

验证用户身份(如登录校验),支持多种方式:用户名密码、LDAP、Active Directory、JWT 等。

2.​​授权(Authorization)​

控制用户访问权限,支持​​基于角色​​(RBAC)和​​基于资源​​的细粒度权限控制(例如校验用户能否删除订单)。

​3.会话管理(Session Management)​

统一管理用户会话,适用于 Web 和非 Web 环境(如命令行应用),支持分布式会话存储(如 Redis)。

​4.加密(Cryptography)​

内置加密工具(如 MD5、SHA 散列、AES 加密),保障敏感数据(如密码)的安全存储。

5.​​其他辅助功能​

  • ​缓存机制​​:缓存用户权限信息,提升性能。

  • ​“记住我”​​:支持用户免重复登录。

  • ​Web 集成​​:通过过滤器(如 authcperms)拦截请求,实现 URL 级安全控制。

⚙️ 三、核心架构组件

Shiro 通过三层组件协同工作:

1.​​Subject​

代表当前操作用户(人或系统),开发者通过 Subject API 直接调用登录、授权等方法。

2.​​SecurityManager​

​​核心控制器​​(类似 Spring MVC 的 DispatcherServlet),管理所有安全操作(认证、授权、会话),并调度其他组件。

3.​​Realm​

安全数据源桥梁​​,连接应用数据(如数据库、LDAP)。开发者需自定义 Realm,提供用户信息及权限数据。

// 示例:自定义Realm 实现认证与授权逻辑
public class CustomRealm extends AuthorizingRealm {
    @Override
    protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken token) {
        // 认证逻辑(校验用户名密码)
    }
    @Override
    protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principals) {
        // 授权逻辑(加载用户权限)
    }
}

☕ 四、与Java的关系

1.​​Java 原生支持​

完全基于 Java 开发,无缝运行于 ​​Java SE​​ 和 ​​Java EE​​ 环境,独立于容器(如 Tomcat)和框架(如 Spring)。

​2.广泛集成能力​

兼容主流 Java 生态:Spring/Spring Boot、JPA、MyBatis、Thymeleaf 等。

3.​​跨场景适用​

支持 Web 应用、微服务、单点登录(SSO)、RESTful API 及后台服务。

⚖️ 五、与Spring Security对比

特性ShiroSpring Security
​易用性​✅ 设计简洁,API 直观❌ 配置复杂,学习曲线陡峭
​灵活性​✅ 独立运行,不依赖 Spring❌ 深度绑定 Spring 生态
​功能覆盖​覆盖核心安全需求更丰富(如 OAuth2 原生支持)
​适用场景​轻量级应用、快速集成大型 Spring 项目、复杂权限管理

💡 ​​结论​​:Shiro 适合追求​​快速实现、轻量集成​​的 Java 项目;Spring Security 更适合深度依赖 Spring 生态的复杂系统。

🧩 六、典型应用场景

1.​​Web 应用权限控制​

通过 URL 拦截(如 /admin/**=roles[admin])管理页面访问权限。

2.​​API 安全​

为 RESTful 服务提供 Token 认证(如 JWT)和接口级授权。

3.​​单点登录(SSO)​

统一多系统登录态,减少重复认证。

4.​​数据加密​

敏感数据(如密码)散列存储,防止泄露。

💎 七、总结归纳概述

       Apache Shiro 作为 ​​Java 安全领域的轻量级解决方案​​,以简洁的 API、灵活的扩展性和低耦合度,成为快速构建安全系统的优选。其与 Java 的深度整合及跨环境适配能力,尤其适合中小型项目或需脱离 Spring 生态的场景。对于复杂权限需求,可结合 Spring Security 或 OAuth2 扩展。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值