【shiro权限管理】系列文章转自 光仔December 后面不做赘述
一、简介
在Web系统中我们经常要涉及到权限问题,例如不同角色的人登录系统,他操作的功能、按钮、菜单是各不相同的,这就是所谓的权限。
Apache Shiro是Java的一个安全(权限)框架,Shiro可以完成认证、授权、加密、会话管理、Web集成、缓存等功能。适用于JavaSE和JavaEE。
关于安全框架,还有一个Spring Security框架,不过目前使用率比较高的还是Apache Shiro
官网下载:http://shiro.apache.org/ 登录上述网站,可以下载Shiro开发包与文档
Shiro的基本功能点如下图所示:
Shiro的最主要的功能分别是Authentication、Authorization、Session Management、Cryptography、Web Support、Caching、Concurency、Testing、Run As、Remember Me。分别解释一下上面的主要功能:
(1)Authentication
即是“认证”功能,说白了登录。我们可以利用Shiro实现登录效果,通过Shiro帮我们完成密码匹配的工作。
(2)Authorization
即是“授权”功能,当我们点一个链接或按钮的时候,Shiro会帮我们判断操作者有没有权限访问该服务。
(3)Session Management
即是“会话管理”功能,在Web系统下(即JavaEE)环境下,是对Http的Session进行托管。而在JavaSE下是由Shiro单独提供一种Session机制。
(4)Cryptography
即是“加密”功能,我们可以很容易的使用Shiro为密码进行“加盐”加密。
(5)Web Support
对于Web进行支持。Shiro可以很容易的与JavaEE工程进行集成。
(6)Concurency
在多线程的情况下,来进行授权认证。例如在一个线程中开启另外一个线程,能把权限自动传播过去。
(7)Caching
Shiro的缓存模块,让系统的授权机制运行速度更快。
(8)Run As
让已经登录的用户,以另外一个用户的身份来操作当前的项目和系统。
(9)Remember Me
即“记住我”,是一个十分常见的功能,即是一次登录后,下次再次访问则不需要登录。
(10)Testing
Shiro提供测试支持。
二、Shiro架构
(1)从外部看Shiro
Shiro的架构从外部看如下图:
其中Application Code代表应用程序的代码,当一个用户去访问应用程序时,Shiro会生成一个该用户Subject对象,代表的是“current User”,即当前用户对象。而下面的Shiro SecurityManager是一个“大管家”的角色,它管理着Shiro的各个组件,而与Subject的所有交互都会委托给SecurityManager。其实Subject仅仅是一个“门面”,SecurityManager才是实际的执行者。
当我们需要访问一些安全数据的时候,需要使用到Realm,它相当于Shiro的一个DataSource。Shiro会从Realm中获取安全数据(如用户、角色、权限),就是说SecurityManager要验证用户身份,需要从Realm中获取相应的用户进行比较以确定用户身份是否合法;也需要从Realm中得到用户相应的角色、权限进行验证用户是否能进行操作。
(2)从内部看Shiro
Shiro的架构从内部看如下图:
最上层的是我们的各种语言编写的应用程序,而这些应用程序都是通过Subject与Shiro进行交互的,而Subject就是与整个SecurityManager打交道。
对于整个SecurityManager,包括以下组件:
1.Subject:代表任何与应用程序发送交互的用户。
2.SecurityManager:相当于SpringMVC的Dispatcher,是Shiro的心脏。所有交互都会通过SecurityManager进行控制,它管理着所有Subject,且负责进行认证、授权、会话以及缓存的管理。
3.Authenticator:负责Subject认证,是一个拓展点,可以自定义实现。可以使用认证策略(Authentication Strategy),即在什么情况下算用户认证通过了。
4.Authorizer:授权器,即访问控制器,用来决定主体是否有权进行相应的操作,即控制着用户能访问应用中的哪些功能。
5.Realm:安全实体数据源。即是提供安全数据的源头,数据源可以是JDBC操作的数据库数据,也可以是缓存中的数据。该实体由用户提供,一般在应用中都需要实现自己的Realm。可以有一个或者多个Realm。
6.SessionManager:管理Session生命周期的组件。Shiro不仅仅可以在Web环境,也可以在普通的JavaSE环境中。
7.CacheManager:缓存控制器,来管理如用户、角色、权限等信息的缓存。由于这些数据基本上很少发生变动,所以存放在缓存中可以提供访问的性能。
8.Cryptography:密码模块。Shiro提供了一些常见的加密组件用于密码的加密/解密。
相关推荐
《SpringBoot-Shiro权限管理系统详解》 在现代的Web开发中,权限管理和用户认证是不可或缺的重要环节。SpringBoot作为一款轻量级的Java框架,以其快速开发、易于配置的特性深受开发者喜爱。Shiro则是Apache组织提供...
Shiro是一个开源的Java...在配置和使用Shiro进行权限管理时,需要对框架有一个全面的理解,包括上述提到的认证、授权、会话管理等核心概念,以及框架的架构细节,这样才能有效地利用Shiro构建出安全稳定的应用程序。
移动互联网场景下服务端Shiro权限管理研究 1. 背景介绍 在移动互联网时代,Web系统、App和微信小程序等多种形式的混合应用层出不穷。随之而来的是权限管理的复杂性显著增加。当前的系统权限管理存在授权方式复杂、...
Apache Shiro 是一个强大且易用的Java安全框架,提供了认证、授权、加密和会话管理功能,可以非常轻松地开发出足够安全的应用。在"shiro_tool.zip"这个压缩包中,我们可以推测可能包含了一些关于Shiro使用的工具类、...
【Apache Shiro】是一个强大的安全管理框架,用于处理身份验证(登录)、授权(权限)、会话管理和密码加密等功能。Shiro与Spring的集成使得在Spring Boot应用中实现安全控制变得更加便捷。在本系统中,Shiro可能会...
1. **shiro-core-1.7.1.jar**:这是Shiro的核心模块,包含了认证、授权、会话管理和加密等基础功能。如Subject、Realms、Cryptography、Session等概念都包含在这个模块中。 2. **shiro-web-1.7.1.jar**:这个模块是...
基于SpringBoot + Vue 开发的前后端分离外卖点单系统,采用Shiro进行权限管理.zip 1、该资源内项目代码经过严格调试,下载即用确保可以运行! 2、该资源适合计算机相关专业(如计科、人工智能、大数据、数学、电子...
### SpringMVC+Shiro权限管理系统详解 #### 权限管理概述 权限管理在软件开发中扮演着至关重要的角色,特别是在涉及多用户交互的应用场景下。通过合理的权限控制,可以确保不同用户仅能访问和操作他们被授权的功能...
Apache Shiro 是一个强大且易用的 Java 安全框架,它提供了认证、授权、加密和会话管理功能,简化了开发人员在应用程序中处理安全问题的复杂性。ShiroTags 是 Shiro 提供的一套用于模板引擎的标签库,如 Freemarker ...
【SpringBoot】与Apache Shiro整合进行权限管理是构建安全Web应用的一种常见方式。Shiro是一个轻量级、易用的Java安全框架,提供身份验证、授权、密码管理和会话管理功能。它通过简单的API使得开发者能快速为各种...
1. **shiro-core-1.7.1.jar**: 这是Shiro的核心库,包含了基本的身份验证、授权和会话管理功能。它提供了一套API,开发者可以使用这些API来处理用户的身份验证和权限控制。 2. **shiro-web-1.7.1.jar**: 这个模块...
Apache Shiro是一个强大的Java安全框架,它提供了身份验证、授权、加密和会话管理功能,为开发人员构建安全的应用程序提供了便利。在这个“Shiro核心jar包.rar”压缩包中,包含的是Apache Shiro的核心库文件“shiro-...
系统的核心是采用了Springboot框架,Shiro权限管理和Mybatis持久层框架。下面我们将详细探讨这些技术栈的知识点。 **Springboot框架** Springboot是由Pivotal团队提供的全新框架,旨在简化Spring应用的初始搭建以及...
### Spring Boot 中整合 Shiro 实现权限管理 #### 一、引言 随着现代Web应用对安全性要求的不断提高,权限管理和身份验证变得尤为重要。Apache Shiro 是一款强大的 Java 安全框架,它提供了简单易用的 API 来帮助...
Apache Shiro是一个强大的Java安全框架,它为应用程序提供了身份验证、授权、会话管理和加密服务。这个"shiro1.7.1全包修补漏洞.rar"文件包含了针对Apache Shiro 1.7.1版本的一些安全修复和更新,旨在解决可能存在的...
内容涵盖 Shiro 认证、加密、授权、安全标签、安全注解、会话管理、缓存、Rememberme 等 JavaEE 企业级开发的核心技术。视频讲授过程中通过分析源代码使学员知其然更知其所以然。 【课程内容】 第一章 问候 Shiro ...
Apache Shiro 是一个强大且易用的 Java 安全框架,提供认证、授权、加密和会话管理功能,可简化企业级应用的安全实现。Shiro 2.alpha.0 是该框架的一个早期版本,包含了框架的核心组件和相关源代码,便于开发者理解...
【SpringBoot+Shiro权限管理系统脚手架】是基于Spring Boot和Apache Shiro框架构建的高效、便捷的企业级权限管理解决方案。Spring Boot以其简洁的配置和快速开发的特点,已经成为Java Web开发的主流选择,而Shiro则...