Apache Shiro入门教程:简单配置与扩展解析

需积分: 9 1 下载量 8 浏览量 更新于2024-07-25 收藏 811KB PPTX 举报
"Apache Shiro 入门学习资料" Apache Shiro 是一款强大的开源安全框架,专为简化身份验证、授权、会话管理和加密等安全任务而设计。它以简洁的API著称,使得开发者能够轻松地集成到各种应用程序中。 **Shiro的主要组件和功能** 1. **身份验证 (Authentication)**: 身份验证是指确认用户身份的过程,也就是常说的“登录”。Shiro 提供了完整的身份验证流程,包括凭证匹配、账户状态检查(如锁定、过期等)和“Remember Me”服务。 2. **授权 (Authorization)**: 授权是根据用户的角色和权限来决定他们能访问哪些资源。Shiro 可以判断用户是否拥有特定角色或权限,实现细粒度的访问控制。 3. **会话管理 (Session Management)**: Shiro 不仅支持传统的服务器端会话,还能让客户端(CS)应用程序使用会话API,这对于分布式环境和跨域应用尤其有用。同时,它还可以处理会话超时、会话固定攻击等问题。 4. **加密 (Cryptography)**: Shiro 对JDK的加密工具进行了封装,提供了易于使用的加密方法,包括密码哈希、密钥生成和消息认证码等。 **其他特性** - **Web 支持**: Shiro 提供了专门针对Web应用的特性,如过滤器、URL拦截等。 - **缓存 (Caching)**: 缓存机制可提升性能,避免频繁的数据库查询。 - **并发 (Concurrency)**: 提供多线程环境下的安全控制,如线程绑定Subject等。 - **测试 (Testing)**: 为了便于单元测试,Shiro 提供了测试支持。 - **RunAs**: 这个功能允许用户暂时扮演其他用户的角色,适用于某些管理场景。 - **Remember Me**: 用户可以选择记住身份,以便下次自动登录,通常用于提高用户体验。 **核心组件:Subject 和 SecurityManager** - **Subject**: Subject 是用户与Shiro进行交互的接口,代表当前“用户”。它可以是实际的用户,也可以是后台系统、服务等。Subject 实例总是与 SecurityManager 关联,所有的安全操作最终都会通过 SecurityManager 来处理。 - **SecurityManager**: 安全管理器是Shiro 的核心,负责协调各个模块的工作,并管理Subject。尽管SecurityManager 是关键,但在实际应用中,开发者通常直接与Subject交互,由SecurityManager 在背后处理实际操作。 总结来说,Apache Shiro 提供了一个全面的安全解决方案,覆盖了从用户身份验证到权限控制、会话管理和加密的全过程,而且其设计思路清晰,易于理解和使用,是开发过程中值得信赖的安全框架。

SLF4J: No SLF4J providers were found. SLF4J: Defaulting to no-operation (NOP) logger implementation SLF4J: See https://www.slf4j.org/codes.html#noProviders for further details. Exception in thread "main" org.apache.shiro.config.ConfigurationException: Unable to instantiate class [org.apache.shiro.web.mgt.DefaultWebSecurityManager] for object named 'securityManager'. Please ensure you've specified the fully qualified class name correctly. at org.apache.shiro.config.ReflectionBuilder.createNewInstance(ReflectionBuilder.java:309) at org.apache.shiro.config.ReflectionBuilder$InstantiationStatement.doExecute(ReflectionBuilder.java:927) at org.apache.shiro.config.ReflectionBuilder$Statement.execute(ReflectionBuilder.java:887) at org.apache.shiro.config.ReflectionBuilder$BeanConfigurationProcessor.execute(ReflectionBuilder.java:765) at org.apache.shiro.config.ReflectionBuilder.buildObjects(ReflectionBuilder.java:260) at org.apache.shiro.config.IniSecurityManagerFactory.buildInstances(IniSecurityManagerFactory.java:167) at org.apache.shiro.config.IniSecurityManagerFactory.createSecurityManager(IniSecurityManagerFactory.java:130) at org.apache.shiro.config.IniSecurityManagerFactory.createSecurityManager(IniSecurityManagerFactory.java:108) at org.apache.shiro.config.IniSecurityManagerFactory.createInstance(IniSecurityManagerFactory.java:94) at org.apache.shiro.config.IniSecurityManagerFactory.createInstance(IniSecurityManagerFactory.java:46) at org.apache.shiro.config.IniFactorySupport.createInstance(IniFactorySupport.java:123) at org.apache.shiro.util.AbstractFactory.getInstance(AbstractFactory.java:47) at com.xiu.Quickstart.main(Quickstart.java:26) Caused by: org.apache.shiro.util.UnknownClassException: Unable to load class named [org.apache.shiro.web.mgt.DefaultWebSecurityManager] from the thread context, current, or system/application ClassLoaders. All heuristics have been exhausted. Class could not be found. at org.apache.shiro.util.ClassUtils.forName(ClassUtils.java:152) at org.apache.shiro.util.ClassUtils.newInstance(ClassUtils.java:168) at org.apache.shiro.config.ReflectionBuilder.createNewInstance(ReflectionBuilder.java:302) ... 12 more

2023-06-10 上传