`
chyou1988
  • 浏览: 7315 次
社区版块
存档分类
最新评论

shiro架构简介

 
阅读更多

shiro的功能点

Authentication:身份认证/登录,验证用户是不是拥有相应的身份;
Authorization:授权,即权限验证,验证某个已认证的用户是否拥有某个权限;即判断用户是否能做事情,常见的如:验证某个用户是否拥有某个角色。或者细粒度的验证某个用户对某个资源是否具有某个权限;
Session Manager:会话管理,即用户登录后就是一次会话,在没有退出之前,它的所有信息都在会话中;会话可以是普通JavaSE环境的,也可以是如Web环境的;
Cryptography:加密,保护数据的安全性,如密码加密存储到数据库,而不是明文存储;
Web Support:Web支持,可以非常容易的集成到Web环境;
Caching:缓存,比如用户登录后,其用户信息、拥有的角色/权限不必每次去查,这样可以提高效率;
Concurrency:shiro支持多线程应用的并发验证,即如在一个线程中开启另一个线程,能把权限自动传播过去;
Testing:提供测试支持;
Run As:允许一个用户假装为另一个用户(如果他们允许)的身份进行访问;
Remember Me:记住我,这个是非常常见的功能,即一次登录后,下次再来的话不用登录了。

外部看架构

Subject:主体,代表了当前“用户”,这个用户不一定是一个具体的人,与当前应用交互的任何东西都是Subject,如网络爬虫,机器人等;即一个抽象概念;所有Subject都绑定到SecurityManager,与Subject的所有交互都会委托给SecurityManager;可以把Subject认为是一个门面;SecurityManager才是实际的执行者;
SecurityManager:安全管理器;即所有与安全有关的操作都会与SecurityManager交互;且它管理着所有Subject;可以看出它是Shiro的核心,它负责与后边介绍的其他组件进行交互,如果学习过SpringMVC,你可以把它看成DispatcherServlet前端控制器;
Realm:域,Shiro从从Realm获取安全数据(如用户、角色、权限),就是说SecurityManager要验证用户身份,那么它需要从Realm获取相应的用户进行比较以确定用户身份是否合法;也需要从Realm得到用户相应的角色/权限进行验证用户是否能进行操作;可以把Realm看成DataSource,即安全数据源。

内部看架构

Subject:主体,可以看到主体可以是任何可以与应用交互的“用户”;
SecurityManager:相当于SpringMVC中的DispatcherServlet或者Struts2中的FilterDispatcher;是Shiro的心脏;所有具体的交互都通过SecurityManager进行控制;它管理着所有Subject、且负责进行认证和授权、及会话、缓存的管理。
Authenticator:认证器,负责主体认证的,这是一个扩展点,如果用户觉得Shiro默认的不好,可以自定义实现;其需要认证策略(Authentication Strategy),即什么情况下算用户认证通过了;
Authrizer:授权器,或者访问控制器,用来决定主体是否有权限进行相应的操作;即控制着用户能访问应用中的哪些功能;
Realm:可以有1个或多个Realm,可以认为是安全实体数据源,即用于获取安全实体的;可以是JDBC实现,也可以是LDAP实现,或者内存实现等等;由用户提供;注意:Shiro不知道你的用户/权限存储在哪及以何种格式存储;所以我们一般在应用中都需要实现自己的Realm;
SessionManager:如果写过Servlet就应该知道Session的概念,Session呢需要有人去管理它的生命周期,这个组件就是SessionManager;而Shiro并不仅仅可以用在Web环境,也可以用在如普通的JavaSE环境、EJB等环境;所有呢,Shiro就抽象了一个自己的Session来管理主体与应用之间交互的数据;这样的话,比如我们在Web环境用,刚开始是一台Web服务器;接着又上了台EJB服务器;这时想把两台服务器的会话数据放到一个地方,这个时候就可以实现自己的分布式会话(如把数据放到Memcached服务器);
SessionDAO:DAO大家都用过,数据访问对象,用于会话的CRUD,比如我们想把Session保存到数据库,那么可以实现自己的SessionDAO,通过如JDBC写到数据库;比如想把Session放到Memcached中,可以实现自己的Memcached SessionDAO;另外SessionDAO中可以使用Cache进行缓存,以提高性能;
CacheManager:缓存控制器,来管理如用户、角色、权限等的缓存的;因为这些数据基本上很少去改变,放到缓存中后可以提高访问的性能
Cryptography:密码模块,Shiro提高了一些常见的加密组件用于如密码加密/解密的。

分享到:
评论

相关推荐

    Apache_Shiro_使用手册(一)Shiro架构介绍

    ### Apache Shiro 使用手册(一)Shiro架构介绍 #### 一、Shiro简介 Apache Shiro 是一款功能强大且易于使用的 Java 安全框架,它提供了多种安全相关的功能和服务,包括但不限于认证、授权、加密和会话管理。相较...

    SpringBoot+Mybatis+Mybatis Plus+Shiro实现一个简单的项目架构

    在本项目中,"SpringBoot+Mybatis+Mybatis Plus+Shiro实现一个简单的项目架构",开发者构建了一个基于Java的轻量级Web应用框架,旨在简化开发流程并强化安全控制。以下是该项目涉及的主要技术点及其详细说明: 1. *...

    shiro权限框架文档

    Shiro的安全体系结构由三个主要的概念组成:Subject(当前操作的用户)、SecurityManager(Shiro架构的核心)、Realms(数据源,即Shiro从哪里获取验证和授权数据)。Subject代表了当前的“用户”,这个用户不一定是...

    安全架构shiro手册说明

    Apache Shiro 是一个全面且易于使用的Java安全框架,旨在简化应用程序的安全管理,包括认证、授权、加密和会话管理。它为各种类型的应用程序提供安全保障,无论是简单的命令行应用、移动应用还是复杂的大型企业系统...

    spring boot 使用jsp 集成hibernate+shiro+ehcache项目分享

    【Spring Boot 使用 JSP 集成 Hibernate+Shiro+Ehcache 项目详解】 Spring Boot 是一个基于 Spring 框架的高度集成了多种技术的开发工具,它简化了配置过程,使得开发人员能够快速构建可运行的应用程序。在这个项目...

    shiro_tool.zip

    在实际项目中,Shiro可以很好地与Spring Boot等框架结合,为微服务架构提供安全保障。 总之,"shiro_tool.zip"可能是一个有价值的资源,对于想要深入理解并应用Apache Shiro的开发者来说,它可以提供实践中的参考和...

    shiro教程 跟我学Shiro教程

    通过阅读,你可以了解到Shiro的基本架构,包括Subject、Realms、Caches等核心概念。Subject是Shiro中的核心接口,代表当前用户的安全上下文;Realms是数据源,负责与后台数据存储进行交互,完成身份验证和授权;...

    shiro的使用教程

    - **SecurityManager**: 被称为安全管理器,是Shiro架构的核心。它负责与Subject、Realm进行交互,并执行安全相关的操作,比如认证和授权。SecurityManager可以看作是一个协调者或控制器,它管理所有的Subject并提供...

    springboot集成freemarker和shiro框架

    **三、Shiro框架简介** Apache Shiro是一个强大且易用的Java安全框架,处理认证、授权、加密和会话管理,与Spring等其他框架集成良好。 **四、集成Shiro** 1. 添加依赖:在`pom.xml`中添加Shiro依赖: ```xml ...

    iSunday-博客项目-ssm-dubbo-shiro的开发架构,前端使用layui-jQuery-boostrap

    iSunday-博客项目-ssm-dubbo-shiro的开发架构,前端使用layui-jQuery-boostrap,目前实现了基于shiro的登录和注册,权限控制的功能和相关界面。.zipiSunday-博客项目-ssm-dubbo-shiro的开发架构,前端使用layui-...

    shiro-redisson基于Redis的ShiroCache和Session实现

    `shiro-redisson` 的设计应该易于与其他组件集成,如 Spring Boot 或者其他微服务架构,这样可以更好地适应不断发展的企业级应用需求。 总之,`shiro-redisson` 为 Shiro 带来了分布式环境下的高效缓存和会话管理...

    shiro jar包及源码下载

    8. **可扩展性**:Shiro的架构设计允许开发者通过插件和自定义实现来扩展其功能,以适应各种复杂的业务场景。 在学习和使用Shiro时,了解并掌握这些核心概念至关重要。通过阅读"shiro-core-1.3.2-sources.jar"中的...

    shiro-demo_DEMO_shiro_shriodemo_shiro框架demo_shiro前后端分离_

    在前后端分离的架构中,前端负责用户界面和交互,而后端处理业务逻辑和数据访问。在这个示例中,Shiro 可能被用作后端的安全层,处理登录验证、权限控制等任务。前端可能通过 RESTful API 与后端进行通信,使用 JSON...

    基于Spring+SpringMvc+MiniJdbc+Shiro为架构的权限管理系统.zip

    一个权限管理系统,以SpringMvc+MiniJdbc+Shiro+MySQL+MQ+Redis+Flappy+Maven为架构,实现了用户-角色-权限三者结合的功能权限颗粒化控制。 一个权限管理系统,以SpringMvc+MiniJdbc+Shiro+MySQL+MQ+Redis+Flappy+...

    Shiro入门.rar

    **二、Shiro架构** Shiro 的核心组件包括 Realm、Subject、SecurityManager、SessionManager 和 CacheManager: 1. **Realm**:是Shiro与应用安全数据交互的接口,负责获取用户、角色和权限信息。 2. **Subject**...

    shiro1.5.3

    同时,还需要理解Shiro的事件监听、缓存管理等高级特性,以便更好地优化和扩展你的安全架构。 总之,Apache Shiro 是一个全面的Java安全解决方案,1.5.3版本的发布意味着它已经经过了广泛的测试和完善,能够为你的...

    shiro

    从给定的标签"源码"和"工具"来看,我们将深入探讨 Shiro 的源码架构以及它在实际开发中的应用。 **Shiro 框架的核心组件** 1. **身份认证(Authentication)**:这是验证用户身份的过程,确保登录的用户确实是他们...

    Apache Shiro教程

    Shiro的架构主要包括三个核心组件:Subject、SecurityManager和Realms。 - **Subject**:代表当前用户的安全操作主体,是Shiro与应用交互的主要接口。 - **SecurityManager**:安全的管理者,负责协调Subject和...

    shiro教程(张开涛)

    3. **Shiro架构** - **Filters**:Shiro通过过滤器链实现Web安全控制,这与Servlet容器的过滤器类似,可以在请求处理前或后执行特定的安全任务。 - **Session Management**:Shiro可以独立于Servlet容器管理会话,...

Global site tag (gtag.js) - Google Analytics