Apache Shiro 框架详解

Shiro教程(一):入门概述与基本使用 Shiro入门概述与基本使用 阅读详情
AI摘要

本文深入解析 Apache Shiro 框架的核心功能与架构,涵盖认证、授权、会话管理及密码加密等关键流程。详细介绍了 SecurityManager、Subject 和 Realm 等核心组件的工作机制,并对比了 Shiro 与 Spring Security 的适用场景,适用于 Java 应用安全设计参考。

一、Shiro 核心功能

Shiro 的核心功能可以概括为 “认证、授权、会话管理、加密”,此外还提供了缓存、RememberMe 等辅助功能。

  • 认证(Authentication):验证用户身份(“你是谁?”),例如登录时校验用户名和密码。
  • 授权(Authorization):验证用户权限(“你能做什么?”),例如判断用户是否有权限访问某个接口或按钮。
  • 会话管理(Session Management):管理用户会话(即使在非 Web 环境中也能使用),支持会话过期、会话存储等。
  • 加密(Cryptography):提供安全的加密算法(如 MD5、SHA)和密码哈希功能,保护敏感数据。
  • 其他功能:缓存(提升权限校验性能)、RememberMe(记住登录状态)、Web 集成、集群会话等。

二、Shiro 架构

Shiro 采用分层架构,从外部到内部分为 “Subject - SecurityManager - Realms” 三层,每层职责明确,且内部包含多个核心组件协同工作。

2.1 三层架构

在这里插入图片描述

  • Subject:对外的“用户”抽象(可以是用户、进程等),所有操作都通过 Subject 触发(如登录、权限校验)。
  • SecurityManager:Shiro 的核心,负责协调内部组件完成安全操作(如认证、授权),是 Shiro 的“大脑”。
  • Realms:连接应用与数据源的桥梁,用于获取用户信息(用户名/密码)和权限信息(角色/权限),Shiro 通过 Realms 验证身份和权限。

2.2 核心组件(SecurityManager 内部)

SecurityManager 内部包含多个组件,分工处理不同的安全功能:

在这里插入图片描述

  • Authenticator:负责认证流程(如校验用户名密码),默认实现为 ModularRealmAuthenticator,支持多 Realm 认证。
  • Authorizer:负责授权流程(如校验用户是否有某权限),默认实现为 ModularRealmAuthorizer。
  • SessionManager:管理用户会话,不依赖 Web 容器(如 Tomcat),支持在非 Web 环境(如 Swing 应用)中使用。
  • CacheManager:缓存用户信息、权限数据等,减少重复查询数据源的开销(默认支持 EhCache、Redis 等)。
  • Cryptography:提供加密工具类(如 SimpleHash),支持 MD5、SHA 等哈希算法,避免明文存储密码。

SecurityManager 内部维护了一个或多个 Realm 实例。 SecurityManager 下管理的认证器、授权器会直接与 Realms 交互,其他组件(如 SessionManager、CacheManager 等)不会直接访问 Realms。

三、核心流程详解

3.1 认证流程(登录)

认证流程是验证用户身份的过程,核心是校验“用户提供的凭证(如密码)”与“数据源中的凭证”是否一致。

流程步骤:
  1. 用户通过 Subject 提交认证请求(如输入用户名密码)。
  2. Subject 将请求委托给 SecurityManager。
  3. SecurityManager 委托 Authenticator 处理认证。
  4. Authenticator 通过 Realm 从数据源获取用户信息(如数据库中的密码)。
  5. Authenticator 比对用户提交的凭证与数据源中的凭证,返回认证结果。
认证流程序列图:
User Subject SecurityManager Authenticator Realm 数据源(DB/文件) 提交认证(用户名/密码) 委托认证 执行认证 获取用户信息 查询用户数据(密码) 返回用户数据 返回用户信息(含凭证) 比对凭证(如密码) 返回认证结果(成功/失败) 返回结果 提示登录结果 User Subject SecurityManager Authenticator Realm 数据源(DB/文件)

3.2 授权流程(权限校验)

授权流程是验证用户是否有权限执行某个操作的过程,核心是检查“用户拥有的权限”是否包含“操作所需的权限”。

流程步骤:
  1. 用户通过 Subject 发起权限校验请求(如访问某接口)。
  2. Subject 将请求委托给 SecurityManager。
  3. SecurityManager 委托 Authorizer 处理授权。
  4. Authorizer 通过 Realm 从数据源获取用户的权限信息(角色/权限)。
  5. Authorizer 校验用户权限是否满足操作需求,返回授权结果。
授权流程序列图:
User Subject SecurityManager Authorizer Realm 数据源(DB/文件) 触发权限校验(如访问接口) 委托授权校验 执行授权 获取用户权限(角色/权限) 查询权限数据 返回权限数据 返回用户权限 校验权限(是否包含所需权限) 返回授权结果(允许/拒绝) 返回结果 允许操作/拒绝访问 User Subject SecurityManager Authorizer Realm 数据源(DB/文件)

3.3 会话管理

Shiro 的会话管理是其核心功能之一,支持跨环境(Web/非Web)的会话统一管理,无需依赖容器(如Tomcat)的会话机制,且提供丰富的会话控制能力。

1. 会话管理核心组件
SecurityManager
SessionManager 会话管理器
SessionDAO 会话持久化
SessionListener 会话监听器
SessionValidationScheduler 会话验证调度器
  • SessionManager:管理所有会话的生命周期(创建、读取、更新、删除),默认实现为 DefaultSessionManager(非Web环境)和 ServletContainerSessionManager(Web环境,依赖容器会话),推荐自定义 DefaultWebSessionManager 实现独立管理。
  • SessionDAO:负责会话的持久化(如内存、数据库、Redis等),常用实现:
    • MemorySessionDAO:默认内存存储(适合开发环境)。
    • EnterpriseCacheSessionDAO:缓存存储(结合EhCache/Redis)。
    • 自定义DAO:集成Redis实现分布式会话(解决集群会话共享问题)。
  • SessionListener:监听会话创建、过期、停止等事件(如记录用户登录日志)。
  • SessionValidationScheduler:定期验证会话有效性,清理过期会话(默认每30分钟执行一次)。
2. 会话管理流程
用户 Subject SecurityManager SessionManager SessionDAO 操作(登录/请求) 获取会话 创建/获取Session 持久化Session(如Redis) 返回Session 返回Session 返回Session 操作响应 定期触发SessionValidationScheduler 清理过期会话 用户 Subject SecurityManager SessionManager SessionDAO
3. 关键特性
  • 会话标识(Session ID):自动生成唯一ID,可通过 session.getId() 获取,常用于跟踪用户会话。
  • 会话属性:支持存储自定义属性(如 session.setAttribute("user", userInfo)),实现用户信息跨请求共享。
  • 过期控制:可设置全局过期时间(如30分钟无操作失效)或单个会话过期时间(session.setTimeout(3600000))。
  • 分布式支持:通过自定义 SessionDAO 集成Redis,实现多服务器间会话共享(解决集群环境下登录状态同步问题)。

3.4 加密

Shiro 提供简化的加密工具,封装了常见加密算法,避免直接操作复杂的Java加密API,常用于密码加密存储。

1. 核心加密组件
  • HashService:提供哈希计算(如MD5、SHA-256),SimpleHash 是常用实现,需指定算法、原始数据、盐值、哈希次数。
  • 盐值(Salt):随机生成的字符串,与密码混合后哈希(防止彩虹表破解,如 salt = new SecureRandomNumberGenerator().nextBytes())。
  • CredentialsMatcher:验证用户提交的凭证(如密码)与存储的哈希值是否匹配(如 HashedCredentialsMatcher)。
2. 密码加密与验证流程
用户(注册/登录) 系统 SimpleHash HashedCredentialsMatcher 注册阶段 提交明文密码(如"123456") 生成盐值(Salt)+ 哈希计算 (算法:SHA-256,盐值:随机字符串,迭代1024次) 存储(哈希值 + 盐值)到数据库 登录阶段 提交明文密码(如"123456") 从数据库获取存储的(哈希值 + 盐值) 用相同盐值和算法哈希输入密码 对比输入哈希值与存储哈希值 匹配结果(成功/失败) 登录结果 用户(注册/登录) 系统 SimpleHash HashedCredentialsMatcher
3. 关于哈希和盐值的补充说明

在Shiro等安全框架中,哈希(Hash) 和盐值(Salt) 是保护密码的核心技术,用于将明文密码转换为不可逆的密文,同时抵御常见的破解手段。下面通过原理拆解和流程示例,清晰说明它们的作用:

  • 哈希(Hash):将密码"单向转换"为密文
    哈希算法(如MD5、SHA-256、Shiro中的SimpleHash)是一种单向加密函数,它能将任意长度的输入(如明文密码)转换为固定长度的输出(哈希值,即密文),且无法从哈希值反推回明文。

  • 哈希的核心作用:

    • 不可逆性 :
      例如,明文"123456"通过SHA-256哈希后可能得到"8d969eef6ecad3c29a3a629280e686cf0c3f5d5a86aff3ca12020c923adc6c92",但无法从这个哈希值反算出"123456"。这意味着即使数据库泄露,攻击者也无法直接获取明文密码。
    • 固定长度输出:
      无论输入是1个字符还是1000个字符,哈希值长度固定(如SHA-256始终输出64个字符),避免密码长度泄露。
    • 雪崩效应:
      输入的微小变化(如密码从"123456"改为"123457")会导致哈希值完全不同,进一步增强安全性。
  • 盐值(Salt):解决"相同密码哈希值相同"的漏洞
    哈希算法有一个问题:相同的明文会生成完全相同的哈希值。例如,两个用户都用"123456"作为密码,它们的哈希值完全一样。这会导致两个风险:

    • 攻击者可通过"彩虹表"(预计算的常见密码哈希值字典)快速匹配出明文;
    • 一旦一个用户密码被破解,所有使用相同密码的用户都会暴露。
  • 盐值的作用:给每个密码添加一个随机唯一的字符串(盐值),再进行哈希,确保即使明文相同,最终的哈希值也不同。

    • 盐值的特性:
      • 随机性:每个用户的盐值独立生成,不可预测;
      • 唯一性:通常与用户账号绑定(如存储在用户表中),确保同一用户的盐值固定;
      • 公开性:盐值不需要保密,可随哈希值一起存储(因为破解难度不在盐值本身,而在加盐后的哈希计算)。
  • 为什么哈希+盐值能有效防破解?

    1. 抵御彩虹表攻击:
      彩虹表是预计算的"明文-哈希值"对应表,但加盐后,相同明文的哈希值完全不同,攻击者需要为每个可能的盐值生成彩虹表,计算量呈指数级增长,几乎不可能实现。
    2. 防止批量破解:
      即使两个用户密码相同,由于盐值不同,哈希值也不同,破解一个用户的密码不会影响其他用户。
    3. 增加暴力破解难度:
      暴力破解(逐个尝试明文并计算哈希)的效率极低,尤其是配合"哈希迭代次数"(如Shiro的hashIterations,重复多次哈希计算),可进一步增加破解时间。

3.5 其他核心功能

1. 缓存(Caching)
  • 作用:缓存用户权限信息(如角色、权限),减少数据库查询,提升性能。
  • 核心组件:
    • CacheManager:管理缓存(默认集成EhCache,可替换为RedisCacheManager)。
    • AuthorizingRealm:通过 doGetAuthorizationInfo 加载权限时自动缓存,默认缓存时间由缓存管理器配置。
  • 使用场景:用户登录后,权限信息被缓存,后续授权操作直接从缓存获取,直至缓存过期或用户权限更新。
2. rememberMe(记住我)
  • 功能:用户勾选“记住我”后,关闭浏览器再打开,无需重新登录即可访问非敏感资源。
  • 实现原理:
    • 登录成功后,Shiro生成加密的 rememberMe Cookie(包含用户标识),存储在客户端。
    • 下次访问时,Shiro读取Cookie并自动登录(但 subject.isAuthenticated() 为 false,subject.isRemembered() 为 true)。
  • 安全控制:敏感操作(如支付)需强制要求用户重新认证(subject.isAuthenticated() == true)。
3. 并发登录控制
  • 功能:限制同一用户同时登录的设备数量(如只允许一个设备在线)。
  • 实现方式:
    • 自定义 SessionListener,登录时检查该用户的活跃会话数量。
    • 超过限制时,强制踢出旧会话(oldSession.stop())。

四、Shiro 核心组件详解

4.1 Subject

  • 定义:代表当前“用户”(可以是真实用户、进程、服务等),是开发者与 Shiro 交互的入口。
  • 常用方法:
    • login(AuthenticationToken token):登录(提交认证)。
    • isAuthenticated():判断是否已认证(登录成功)。
    • hasRole(String role):判断是否拥有某个角色。
    • checkPermission(String permission):校验是否拥有某个权限(无权限时抛异常)。
    • getSession():获取当前会话。

4.2 SecurityManager

  • 定义:Shiro 的核心管理器,协调所有组件(认证、授权、会话等),开发者需先初始化并配置它。
  • 初始化示例(通过 Ini 配置文件):
    // 读取 Shiro 配置文件
    Factory<SecurityManager> factory = new IniSecurityManagerFactory("classpath:shiro.ini");
    SecurityManager securityManager = factory.getInstance();
    // 设置全局 SecurityManager
    SecurityUtils.setSecurityManager(securityManager);
    

4.3 Realm

  • 定义:连接应用与数据源的桥梁,负责提供用户信息(认证)和权限信息(授权)。

  • 常见类型:

    • IniRealm:从 ini 配置文件读取用户/权限数据(适合简单场景)。
    • JdbcRealm:从数据库读取数据(需配置 SQL 语句)。
    • 自定义 Realm:继承 AuthorizingRealm,重写认证和授权方法(适合复杂业务)。
  • 自定义 Realm 示例:

    public class MyRealm extends AuthorizingRealm {
        // 授权:获取用户权限
        @Override
        protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principals) {
            String username = (String) principals.getPrimaryPrincipal();
            // 从数据库查询用户权限(示例)
            Set<String> permissions = new HashSet<>();
            permissions.add("user:query");
            SimpleAuthorizationInfo info = new SimpleAuthorizationInfo();
            info.setStringPermissions(permissions);
            return info;
        }
    
        // 认证:获取用户凭证
        @Override
        protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken token) throws AuthenticationException {
            String username = (String) token.getPrincipal();
            // 从数据库查询密码(示例)
            String password = "123456"; // 实际应从 DB 读取
            return new SimpleAuthenticationInfo(username, password, getName());
        }
    }
    

五、Shiro 与 Web 集成

在 Web 应用中,Shiro 通过 Filter 拦截请求,实现 URL 级别的权限控制。

核心配置(web.xml):

<!-- Shiro 过滤器 -->
<filter>
    <filter-name>shiroFilter</filter-name>
    <filter-class>org.apache.shiro.web.servlet.ShiroFilter</filter-class>
</filter>
<filter-mapping>
    <filter-name>shiroFilter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

URL 权限配置(shiro.ini):

[urls]
/login = anon  # 登录页允许匿名访问
/logout = logout  # 退出登录
/user/** = authc, perms["user:manage"]  # /user/** 路径需认证且拥有 user:manage 权限
/admin/** = authc, roles["admin"]  # /admin/** 路径需认证且拥有 admin 角色

六、同类型产品分析

在Java生态中,主流的安全框架以 Apache Shiro 和 Spring Security 为主,此外还有针对特定场景的解决方案(如Keycloak、Pac4j等)。选择框架时需结合项目规模、技术栈、安全需求复杂度等因素。

主流方案对比:Shiro vs Spring Security

两者是最常用的企业级安全框架,核心功能覆盖认证、授权、加密等,但设计理念和适用场景差异显著。

对比维度Apache ShiroSpring Security
设计理念简洁、易用,强调“开箱即用”,API直观易懂功能全面,强调“深度集成Spring生态”,灵活性强
核心功能认证、授权、会话管理、加密、缓存集成认证、授权、OAuth2.0/OpenID Connect、SSO、LDAP等(功能更全)
易用性学习曲线平缓,配置简单(XML/注解均可),文档清晰学习曲线较陡,配置复杂(依赖Spring生态知识)
集成性与Spring、Java EE、Servlet、JAX-RS等均可集成(不绑定特定框架)深度绑定Spring生态(Spring Boot/Cloud无缝集成),非Spring项目集成较麻烦
会话管理内置独立会话管理(不依赖Servlet容器),支持分布式会话早期依赖Servlet容器会话,需配合Spring Session实现分布式
扩展能力扩展点明确(如Realm、Filter),适合简单扩展扩展点极多(如SecurityContext、AuthenticationProvider),适合复杂场景定制
适用场景中小型应用、快速开发、多框架集成、非Spring项目大型企业应用、Spring生态项目、复杂安全需求(如SSO、OAuth2)
社区活跃度社区稳定,更新频率中等(2023年发布1.12.0版本)社区活跃,更新频繁(依赖Spring版本迭代)

Shiro是“简单场景的最优解”,以低学习成本满足基础安全需求;Spring Security是“复杂场景的全能选手”,适合深度集成Spring生态的大型项目。选型时不必纠结“功能多少”,而应聚焦“项目实际需求”和“团队技术栈匹配度”——合适的才是最好的。

Shiro框架详解 Shiro 可以非常容易的开发出足够好的应用,其不仅可以用在 JavaSE 环境,也可以用在 JavaEE 环境。Shiro 可以帮助我们完成:认证、授权、加密、会话管理、与 Web 集成、缓存等。记住一点,Shiro 不会去维护用户、维护权限;这些需要我们自己去设计 / 提供;然后通过相应的接口注入给 Shiro 即可。 阅读详情

相关推荐

Shiro权限管理框架

对于细颗粒度的权限管理不建议做成系统架构级别的功能,因为对数据级别的控制是系统的业务需求,随着业务需求的变更业务功能变化的可能性很大,建议对数据级别的权限控制在业务层个性化开发,比如:用户只允许修改自己创建的商品信息可以在service接口添加校验实现,service接口需要传入当前操作人的标识,与商品信息创建人标识对比,不一致则不允许修改商品信息。对资源类型的管理称为粗颗粒度权限管理,即只控制到菜单、按钮、方法,粗粒度的例子比如:用户具有用户管理的权限,具有导出订单明细的权限。

king220022的博客 1426

什么是 Apache Shiro

什么是Apache Shiro Apache Shiro 是一种功能强大且易于使用的Java安全框架,它具有身份验证、访问授权、数据加密、会话管理等功能,可用于保护任何应用程序的安全。 如: 命令行应用程序、移动应用程序、Web应用程序、企业级应用程序。从小到大到很大,Apache Shiro都会给你提供安全帮助。 Shiro 为你的应用程序提供如下API,帮助你更好的管理应用程序的安全。 身份验证 证明用户的身份。也就是所谓的用户的 “登录” 功能,验证访问的用户是否有权利登录系统或者访问后台接口。

web15085599741的博客 6107

Apache Shiro与SSM框架整合的jar包全解

Apache Shiro是一个功能强大且易于使用的Java安全框架,它能够帮助开发者实现身份验证、授权、会话管理以及加密等安全操作。Shiro的核心理念是提供一个直观、易用的API,以便开发者能够快速集成到各种应用中。Shiro框架的主要特性包括:认证(Authentication):确保用户身份的过程,它通过对比提交的凭证信息(如用户名和密码)与存储的凭证信息来验证用户。授权(Authorization):在认证的基础上,判断用户是否有权限执行特定的操作或访问特定的资源。

weixin_35751412的博客 981

Apache Shiro,这一篇就够了

点击后会跳转到一个login.jsp页面,这个不是我们想要的效果,我们需要自己定义一个login页面!然后在 shiroFilterFactoryBean 中配置一个未授权的请求页面!我们再次启动测试一下,访问add,发现以下错误!在UserRealm 中添加授权的逻辑,增加授权的字符串!改造UserRealm,连接到数据库进行真实的操作!再次测试,成功的跳转到了我们指定的Login页面!编写实体类:(和数据库中的表字段要对应哦)使用shiro的过滤器来拦截请求即可!在前端修改对应的信息输出或者请求!

大河之犬的博客 1607

Apache Shiro框架教程详解(张开涛著)

Apache Shiro是一个全面的Java/Java EE安全框架,它提供了一套易于理解和使用的API来保护应用,防止未经授权的访问。Shiro不仅仅限于认证和授权,它还提供了包括会话管理、加密服务在内的核心功能,为应用的业务逻辑提供安全保障。Shiro的架构设计简洁明了,它主要通过三个核心概念来实现安全控制:Subject和Realms。Subject:代表当前与软件交互的用户或其他事物。它与用户的概念紧密相关,但并不限于用户。

weixin_28840811的博客 1015

掌握Apache Shiro框架加密技术

Apache Shiro是一个强大的Java安全框架,它不仅简化了身份验证、授权、会话管理和加密等安全功能的实现,还通过提供API来管理用户的安全性。Shiro的设计哲学是易于使用、可扩展,同时也非常注重应用程序的安全性能。本章将对Shiro框架的核心概念、基本组件以及其在企业级应用中的优势进行概述。我们将探讨Shiro的三个主要部分:认证、授权以及会话管理,并通过实际案例演示如何将Shiro集成到应用程序中,为开发者提供一个全面的入门指南。// 示例代码:Shiro框架在Web应用中的简单集成。

weixin_42603332的博客 1500

Apache Shiro 框架简介

一、什么是ShiroApache Shiro是一个强大易用的Java安全框架,提供了认证、授权、加密和会话管理等功能:对于任何一个应用程序,Shiro都可以提供全面的安全管理服务。并且相对于其他安全框架,Shiro要简单的多。二、Shiro的架构介绍首先,来了解一下Shiro的三个核心组件:Subject, SecurityManager 和 Realms. 如下图:Subject:即“当前操作用户”。但是,在Shiro中,Subject这一概念并不仅仅指人,也可以是第三方进程、后台帐户(Daemon Ac

weixin_53105361的博客 596

一起玩转GNU Radio:调制解调大合集

本文汇总了GNU Radio中多种常见的调制解调方法及其参考文献链接,便于今后查看,供大家参考!

无线通信实验室 1万+

Apache Shiro 安全框架

Realm域:Shiro从Realm获取安全数据(如用户、角色、权限),就是说SecurityManager要验证用户身份,那么它需要从Realm获取相应的用户进行比较以确定用户身份是否合法;也需要从Realm得到用户相应的角色/权限进行验证用户是否能进行操作;可以把Realm看成DataSource,即安全数据源/*** 自定义Realm 处理登录 权限*/@Autowired@Autowired@Autowired/*** 授权*/@Override// 角色列表。

m0_73745224的博客 2094

代付系统/代付系统源码/支付宝代付系统/API代付系统

简介: 其他站买的,没有做测试,源码是JAVA的,附带了安装文档,需要的拿无售后 源码下载地址https://www.skpan.cn/2QnIARSZDxG 代付系统/代付系统源码/支付宝代付系统/API代付系统 系统流程: 后台开通代理——开通商户——商户做代付(后台手工提交和 api 提交两种方式) 1、纯代付系统 2、支持个人支付宝全自动 3、支持单笔/批量/API接口方式代付 4、支持白名单、谷歌验证 5、收付款模式采用自动回调/自动转账 一、运营平台 商户管.

刀客源码网 5575

最新Mamba环境配置教程:从CUDA到causal-conv1d的完整安装流程

本文提供最新Mamba环境配置教程,涵盖从CUDA到causal-conv1d的完整安装流程。针对深度学习领域的长序列处理需求,详细指导如何正确配置CUDA工具链、安装PyTorch及关键依赖causal-conv1d,解决常见报错问题,并验证mamba-ssm集成效果。

bush的博客 417

Apache Shiro权限框架

简介 Apache Shiro是一个强大且易用的Java安全框架,执行身份验证、授权、密码学和会话管理。使用Shiro的易于理解的API,您可以快速、轻松地获得任何应用程序,从最小的移动应用程序到最大的网络和企业应用程序。 主要功能 三个核心组件:Subject, SecurityManager 和 Realms. Subject:即“当前操作用户”。但是,在Shiro中,Subject这一概念并不仅仅指人,也可以是第三方进程、后台帐户(Daemon Account)或其他类似事物。它仅仅意味着“当前跟软件

web13618542420的博客 177

【Labview】对连续采集数据的一种采样方法

图1如图1,想要对这样一个连续信号进行数据点的采集,我根据网上收集到的方法,在此分享一下最终的结果。可以拓展结合文件的写入,完成对连续信号的采集和输出。 已知: 一个连续信号,如图1. 目标: 设定一定采集点个数、采集点时间间隔、和采集周期次数,得到这条连续信号的数据点,如图2. 图2 方法如下: 主要利用的是队列的方法。 在连续信号生成的时候,不断的写入队列,并且清除队列。 ...

李时珍食疗志的博客 1万+

【SaaS - Export项目】21 - apache shiro框架,shiro架构,shiro环境搭建

文章目录Apache shiro框架Apache shiro的功能组成Apache shiro架构简图Apache shiro环境搭建1. 项目添加shiro依赖(整合spring依赖)2. web.xml中配置shiro过滤器3. Spring整合shiro,配置applicationContext-shiro.xml4. 创建自定义realm类(AuthRealm),继承AuthorizingRealm5. 运行程序测试环境搭建 用户登录之后,左侧菜单栏对应着用户的模块权限,有什么权限就显示什么模块

Java小皮孩 1147

S7-1200 Modbus TCP客户端配置实战:从基础设置到数据交互详解

本文详细介绍了S7-1200 Modbus TCP客户端的配置方法,从基础设置到数据交互的完整流程。涵盖硬件准备、TIA Portal配置、MB_CLIENT指令参数详解、数据缓冲区管理及实战测试,帮助工程师快速掌握西门子PLC与Modbus TCP通信的关键技术。

fire9的博客 310

语言大模型之Tokenization的深入理解

Tokenization(分词)是自然语言处理(NLP)中一个非常重要的步骤,它的目标是将文本转换为模型可以理解的格式。对于像GPT、BERT等大型预训练模型来说,tokenization决定了文本如何转化为数字表示,从而影响模型在不同任务中的表现。接下来我会深入介绍tokenization的过程、不同的tokenization方法,以及它与模型微调(fine-tuning)之间的关系。

JustinMars的博客 341

Apache Shiro框架简介

首先,来了解一下Shiro的三个核心组件:Subject, SecurityManager 和 Realms. 如下图:Subject:即“当前操作用户”。但是,在Shiro中,Subject这一概念并不仅仅指人,也可以是第三方进程、后台帐户(Daemon Account)或其他类似事物。它仅仅意味着“当前跟软件交互的东西”。但考虑到大多数目的和用途,你可以把它认为是Shiro的“用户”概念。Subject代表了当前用户的安全操作,SecurityManager则管理所有用户的安全操作。...

web15286201346的博客 238

MATLAB 图像滤波:高通、低通、带通和方向滤波器

在 MATLAB 中,我们可以使用不同类型的滤波器对图像进行处理,包括高通滤波器、低通滤波器、带通滤波器和方向滤波器。通过以上代码示例,我们介绍了 MATLAB 中使用高通滤波器、低通滤波器、带通滤波器和方向滤波器对图像进行滤波的方法。高斯滤波器可以实现带通滤波效果,通过调整滤波器的方差参数可以控制带通滤波器的频率范围。这里的平均滤波器是一种常见的低通滤波器,通过对图像周围的像素进行平均来实现平滑效果。Sobel 滤波器是一种常用的方向滤波器,用于检测图像中的水平和垂直边缘。函数将高通滤波器应用于图像。

CyberSparkZ的博客 1394

Apache shiro 安全框架入门学习

文章目录 前言 一、什么是Apache Shiro? 二、核心概念介绍及架构 1.整体框架图 2.核心概念 3.整体功能 三、功能详解 总结 前言 此文章为自己学习Shiro框架做学习笔记之用,从shiro涉及到的几个概念的讲解,到简单的单元测试,最后实现权限框架的搭建及测试 一、什么是Apache Shiro? Apache Shiro 是ASF旗下的一款开源软件,它是一个功能强大且易于使用的Java安全框架。Shiro将目标集中于Shiro开发团队所称的“四大安全基石”-认.

酷酷的李先生的博客 811

UE4打包为Framework库嵌入iOS原生工程

UE4打包为Framework库嵌入iOS原生工程

tangfuling1991的博客 1294

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

Apache Shiro , Java 安全框架

Apache Shiro是一个简单易用的Java安全框架,提供身份验证、授权、加密和会话管理功能。其清晰的API支持从移动应用到企业系统的安全需求。文档提供了Maven依赖配置(包括核心模块、Web模块和SpringBoot集成),以及详细的入门教程和Web应用安全实践指南。教程采用Git分支形式,逐步演示用户登录、权限控制等功能的实现,适合开发者快速上手。

RR1335 之代码才是动力源 1093

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

03-Apache Shiro 安全框架(练一个)

Shiro安全框架简介 Shiro概述 Shiro是apache旗下一个开源安全框架,它对软件系统中的安全认证相关功能进行了抽封装,实现了用户身份认证,权限授权、加密、会话管理等功能,组成了一个通用的安全认证框架。使用shiro就可以非常快速的完成认证、授权等功能的开发,降低系统成本。 用户在进行资源访问时,要求系统要对用户进行权限控制,其具体流程如图所示: Shiro概要架构 在概念层面,Shiro 架构包含三个主要的理念,如图所示: 其中: Subject :主体对象,负责提交用户认证和授权信息。

雨田说码 4803

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

Apache Shiro 框架解析

Apache Shiro设计理念是用直观、简单的方式来保证应用的安全。 软件设计通常是基于用户故事来实现的,也就是会根据用户如何与系统交互来设计用户接口或者服务API。比如这样一个用户故事,用户登录后会显示一个查看个人账户信息的按钮,如果用户未注册,则显示一个注册按钮。 这个用户故事暗含了应用主要应完成的用户需求。即使这里的用户不是人而是第三方系统,在编码时也同样当做与系统交互的“用户”来处理

A梦先生的专栏 2614

Apache Shiro框架

Shiro简介 (1)Shiro 是什么? Apache Shiro是一个强大且易用的Java安全框架/权限框架 本质:预先定义好的权限代码(过滤器,RBAC模型设计,JSP标签等) (2)Shiro有什么用? 执行身份验证、授权(查询有什么权限)、密码学(md5,sha1)和会话管理 (3)Shiro有什么特点? 常见的权限框架有apache Shiro ,与spring Security等 Apache Shiro: 好处:设计简单,配置简单 弊端:和Spring结合,需要整合;功能没有spring S

weixin_44231137的博客 360

Apache shiro框架

Apache Shiro是一个强大且易用的Java安全框架,执行身份验证、授权、密码和会话管理。使用Shiro的易于理解的API,您可以快速、轻松地获得任何应用程序,从最小的移动应用程序到最大的网络和企业应用程序。三个核心组件:Subject, SecurityManager 和 Realms.即“当前操作用户”。但是,在Shiro中,Subject这一概念并不仅仅指人,也可以是第三方进程、后台帐户(Daemon Account)或其他类似事物。它仅仅意味着“当前跟软件交互的东西”。

asddasddeedd的博客 2036
上一篇: Maven核心概念
下一篇: 前端学习笔记:React.js中state和props的区别和联系
TracyCoder123
博客等级 码龄8年 1万+粉丝 226原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

TracyCoder123

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值