"这篇文档介绍了Apache Shiro框架的使用规范,特别是如何进行简单扩展,以及Shiro的主要功能和组件。"
在Apache Shiro框架中,`三简单扩展-shiro使用规范`这部分内容主要讲述了如何自定义 Realm。Realm 是Shiro中的核心概念,它负责与应用程序的特定安全存储进行交互,比如数据库、LDAP服务器等,用于实现身份验证(Authentication)和授权(Authorization)。在示例中,创建了一个名为 `MyRealm` 的自定义 Realm,它继承自 `AuthorizingRealm` 类。这个类是Shiro提供的一种默认的 Realm 实现,用于处理授权信息。
自定义 Realm 的关键在于重写 `doGetAuthorizationInfo` 方法。在这个方法中,你需要根据用户的 PrincipalCollection(通常包含用户名)查询用户的所有资源,并将这些资源信息存储到 `AuthorizationInfo` 对象中。`AuthorizationInfo` 包含了用户的权限(Permissions)、角色(Roles)和其他对象权限(ObjectPermissions)。在这个例子中,使用了 `SimpleAuthorizationInfo` 类,它可以方便地设置字符串形式的权限和角色。
Shiro的入门学习手册中,详细列举了Shiro能做的几件事情,包括用户验证、访问控制、Session管理、多数据源支持、单点登录(SSO)和“RememberMe”服务。Shiro的四个核心组件分别是:
1. 身份验证(Authentication):验证用户的身份,即“登录”过程。
2. 授权(Authorization):根据用户的角色和权限决定其对资源的访问权限。
3. 会话管理(SessionManagement):Shiro可以在任何环境中提供Session支持,包括CS(客户端-服务器)程序。
4. 加密(Cryptography):简化复杂的密码加密操作。
此外,Shiro还提供了Web支持、缓存、多线程、测试、"RunAs"(模拟用户身份)和"RememberMe"服务等功能。`Subject` 是Shiro中与用户交互的主要接口,而`SecurityManager` 是整个框架的核心,负责协调各个模块。虽然我们在编程时主要与Subject交互,但SecurityManager在后台起着至关重要的作用。
Apache Shiro提供了一套全面的解决方案来处理应用程序的安全需求,通过自定义 Realm 可以灵活地适应各种数据存储和权限模型,从而实现对用户身份和权限的有效管理。