网站建设应该注意的设计要点,电商网站方案,网站制作专业吗,电脑培训机构前言 本文小新为大家带来 Shiro入门概述 相关知识#xff0c;具体内容包括Shiro是什么#xff0c;为什么要用 Shiro#xff0c;Shiro与Spring Security 的对比#xff0c;Shiro的基本功能#xff08;包括#xff1a;基本功能框架#xff0c;功能简介#xff09;#x…前言 本文小新为大家带来 Shiro入门概述 相关知识具体内容包括Shiro是什么为什么要用 ShiroShiro与Spring Security 的对比Shiro的基本功能包括基本功能框架功能简介Shiro框架原理包括Shiro架构(Shiro外部来看)Shiro架构(Shiro内部来看)等进行详尽介绍~
不积跬步无以至千里不积小流无以成江海。每天进步一点点在成为强者的路上小新与大家共同成长
博主主页小新要变强 的主页 Java全栈学习路线可参考【Java全栈学习路线】最全的Java学习路线及知识清单Java自学方向指引内含最全Java全栈学习技术清单~ 算法刷题路线可参考算法刷题路线总结与相关资料分享内含最详尽的算法刷题路线指南及相关资料分享~ Java微服务开源项目可参考企业级Java微服务开源项目开源框架用于学习、毕设、公司项目、私活等减少开发工作让您只关注业务
欢迎关注小新的Git仓库小新Java成长之路不定期更新Java学习资料~ 目录 Shiro入门概述 前言目录一、Shiro是什么二、为什么要用 Shiro三、Shiro与Spring Security 的对比四、Shiro的基本功能1️⃣基本功能框架2️⃣功能简介 五、Shiro框架原理1️⃣Shiro架构(Shiro外部来看)2️⃣Shiro架构(Shiro内部来看) 后记 一、Shiro是什么
Apache Shiro 是一个功能强大且易于使用的 Java 安全(权限)框架。Shiro 可以完成认证、授权、加密、会话管理、与 Web 集成、缓存 等。借助 Shiro 您可以快速轻松地保护任何应用程序——从最小的移动应用程序到最大的 Web 和企业应用程序。 Shiro官网https://shiro.apache.org/
二、为什么要用 Shiro
自 2003 年以来框架格局发生了相当大的变化因此今天仍然有很多系统在使用Shiro。这与 Shiro 的特性密不可分。
易于使用使用 Shiro 构建系统安全框架非常简单。就算第一次接触也可以快速掌握。
全面Shiro 包含系统安全框架需要的功能满足安全需求的“一站式服务”。
灵活Shiro 可以在任何应用程序环境中工作。虽然它可以在 Web、EJB 和 IoC 环境中工作但不需要依赖它们。Shiro 也没有强制要求任何规范甚至没有很多依赖项。
强力支持 WebShiro 具有出色的 Web 应用程序支持可以基于应用程序 URL 和Web 协议例如 REST创建灵活的安全策略同时还提供一组 JSP 库来控制页面输出。
兼容性强Shiro 的设计模式使其易于与其他框架和应用程序集成。Shiro 与Spring、Grails、Wicket、Tapestry、Mule、Apache Camel、Vaadin 等框架无缝集成。
社区支持Shiro 是 Apache 软件基金会的一个开源项目有完备的社区支持文档支持。如果需要像 Katasoft 这样的商业公司也会提供专业的支持和服务。
三、Shiro与Spring Security 的对比
1Spring Security 基于 Spring 开发项目若使用 Spring 作为基础配合 Spring Security做权限更加方便而 Shiro 需要和 Spring 进行整合开发2Spring Security 功能比 Shiro 更加丰富些例如安全维护方面3Spring Security 社区资源相对比 Shiro 更加丰富4Shiro 的配置和使用比较简单Spring Security 上手复杂些5Shiro 依赖性低不需要任何框架和容器可以独立运行.Spring Security 依赖Spring 容器6Shiro 不仅仅可以使用在 web中它可以工作在任何应用环境中。在集群会话时Shiro最重要的一个好处或许就是它的会话是独立于容器的。
四、Shiro的基本功能
1️⃣基本功能框架 2️⃣功能简介
1Authentication身份认证/登录验证用户是不是拥有相应的身份2Authorization授权即权限验证验证某个已认证的用户是否拥有某个权限即判断用户是否能进行什么操作如验证某个用户是否拥有某个角色。或者细粒度的验证 某个用户对某个资源是否具有某个权限3Session Manager会话管理即用户登录后就是一次会话在没有退出之前它的所有信息都在会话中会话可以是普通JavaSE 环境也可以是 Web 环境的4Cryptography加密保护数据的安全性如密码加密存储到数据库而不是明文存储5Web SupportWeb 支持可以非常容易的集成到 Web 环境6Caching缓存比如用户登录后其用户信息、拥有的角色/权限不必每次去查这样可以提高效率7ConcurrencyShiro 支持多线程应用的并发验证即如在一个线程中开启另一个线 程能把权限自动传播过去8Testing提供测试支持9Run As允许一个用户假装为另一个用户如果他们允许的身份进行访问10Remember Me记住我这个是非常常见的功能即一次登录后下次再来的话不用登 录了
五、Shiro框架原理
1️⃣Shiro架构(Shiro外部来看)
从外部来看 Shiro 即从应用程序角度的来观察如何使用 Shiro 完成工作Shiro 架构如下图所示 1Subject应用代码直接交互的对象是 Subject也就是说 Shiro 的对外 API 核心就是 Subject。Subject 代表了当前“用户” 这个用户不一定 是一个具体的人与当前应用交互的任何东西都是Subject如网络爬虫 机器人等与 Subject 的所有交互都会委托给SecurityManagerSubject其实是一个门面SecurityManager 才是实际的执行者2SecurityManager安全管理器即所有与安全有关的操作都会与 SecurityManager 交互且其管理着所有Subject可以看出它是 Shiro 的核心它负责与 Shiro 的其他组件进行交互它相当于 SpringMVC 中DispatcherServlet 的角色3RealmShiro 从 Realm 获取安全数据如用户、角色、权限就是说SecurityManager要验证用户身份那么它需要从 Realm 获取相应的用户 进行比较以确定用户身份是否合法也需要从 Realm 得到用户相应的角色/权限进行验证用户是否能进行操作可以把 Realm 看成 DataSource。
2️⃣Shiro架构(Shiro内部来看)
从Shiro内部来看Shiro架构如下图所示
1Subject任何可以与应用交互的“用户”2SecurityManager 相当于 SpringMVC 中的 DispatcherServlet是 Shiro 的心脏 所有具体的交互都通过 SecurityManager 进行控制它管理着所有 Subject、且负责进行认证、授权、会话及缓存的管理3Authenticator负责 Subject 认证是一个扩展点可以自定义实现可以使用认证策略Authentication Strategy即什么情况下算用户认证通过了4Authorizer授权器、即访问控制器用来决定主体是否有权限进行相应的操作即控制着用户能访问应用中的哪些功能5Realm可以有 1 个或多个 Realm可以认为是安全实体数据源即用于获取安全实体的可以是JDBC实现也可以是内存实现等等由用户提供所以一般在应用中都需要实现自己的 Realm6SessionManager管理 Session 生命周期的组件而 Shiro 并不仅仅可以用在 Web 环境也可以用在如普通的 JavaSE 环境7CacheManager缓存控制器来管理如用户、角色、权限等的缓存的因为这些数据基本上很少改变放到缓存中后可以提高访问的性能8Cryptography密码模块Shiro 提高了一些常见的加密组件用于如密码加密/解密。 后记 Java全栈学习路线可参考【Java全栈学习路线】最全的Java学习路线及知识清单Java自学方向指引内含最全Java全栈学习技术清单~ 算法刷题路线可参考算法刷题路线总结与相关资料分享内含最详尽的算法刷题路线指南及相关资料分享~