跟我学Shiro:从入门到精通

需积分: 29 0 下载量 67 浏览量 更新于2024-07-20 收藏 4.16MB PDF 举报
"Shiro教程.pdf" 本教程详细介绍了Apache Shiro框架,这是一款强大的Java安全框架,用于处理认证、授权、会话管理和加密等安全相关的功能。以下是对各个章节核心知识点的总结: 1. **SHIRO简介** - Shiro提供了一个简单易用的API,帮助开发者快速实现应用的安全控制。 - 它不局限于Web应用,也可以在JavaSE环境中使用。 2. **身份验证** - 环境准备:介绍如何设置开发环境来开始使用Shiro。 - 登录/退出:讲解用户登录和退出的处理流程。 - 身份认证流程:详细阐述了Shiro验证用户身份的步骤。 - REALM: Realm是Shiro与应用数据源交互的接口,用于获取和验证用户凭证。 - AUTHENTICATOR及AUTHENTICATIONSTRATEGY: Authenticator负责执行身份验证操作,AuthenticationStrategy则决定了多个验证尝试的处理策略。 3. **授权** - 授权方式:讨论了Shiro的权限分配方式。 - PERMISSION:Permission代表了用户可以执行的操作或访问的资源。 - 授权流程:解释了Shiro如何进行权限检查。 - AUTHORIZER、PERMISSIONRESOLVER及ROLEPERMISSIONRESOLVER:这些组件协同工作,将用户的权限信息转换为可执行的决策。 4. **INI配置** - SECURITYMANAGER:Shiro的核心组件,管理所有安全相关的操作。 - INI配置:说明如何通过INI配置文件来配置Shiro的各个组件。 5. **编码/加密** - 编码/解码:涉及字符编码、解码以及数据转换。 - 散列算法:讨论了密码存储时使用的哈希算法,如MD5和SHA。 - 加密/解密:涵盖了对敏感信息进行加密和解密的方法。 - PASSWORDSERVICE/CREDENTIALSMATCHER:PasswordService处理密码的加密和比较,CredentialsMatcher用于比较原始输入和加密后的密码。 6. **REALM及相关对象** - REALM:再次强调其在Shiro中的重要性,作为数据源的抽象。 - AUTHENTICATIONTOKEN:代表用户提交的登录信息。 - AUTHENTICATIONINFO:存储验证所需的所有信息,如用户名、密码等。 - PRINCIPALCOLLECTION:包含一个或多个主体(Principal)的集合,表示用户的身份。 - AUTHORIZATIONINFO:存储用户的角色和权限信息。 - SUBJECT:Shiro中的核心概念,代表当前安全上下文中的用户。 7. **与WEB集成** - 准备环境:介绍如何在Web应用中集成Shiro。 - SHIROFILTER:ShiroFilter是Web应用中的过滤器,负责拦截请求并执行相应的安全操作。 - WEB INI配置:讲解如何在Web应用的配置文件中设置Shiro。 8. **拦截器机制** - 拦截器介绍:说明Shiro的拦截器是如何工作的。 - 拦截器链:展示了拦截器的执行顺序和流程。 - 自定义拦截器:教读者如何创建自己的拦截器。 - 默认拦截器:列出Shiro内置的一些常用拦截器。 9. **JSP标签** - 描述了如何在JSP页面中使用Shiro的标签库来进行权限控制。 10. **会话管理** - 会话:讲解了Shiro如何管理用户的会话状态。 - 会话管理器:负责创建、销毁和同步会话。 - 会话监听器:当会话事件发生时,如创建、更新、失效,监听器会被调用。 - 会话存储/持久化:讨论了如何持久化会话数据。 - 会话验证:介绍了定期检查会话有效性的机制。 - SESSIONFACTORY:创建和配置会话的工厂类。 11. **缓存机制** - REALM缓存: Realm的缓存机制,用于提高数据访问效率。 - SESSION缓存:会话数据的缓存策略。 12. **与SPRING集成** - JAVASE应用:如何在Java桌面应用中集成Shiro和Spring。 - WEB应用:在Web环境中整合Shiro和Spring的指南。 - SHIRO权限注解:利用Shiro的注解进行权限控制。 以上内容构成了一个全面的Shiro学习路径,涵盖了从基础概念到实际应用的各个方面,适合想要理解和使用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 上传