Shiro系列(3) - What is shiro?

简介: 什么是shiro?Shiro是apache的一个开源权限管理的框架,它实现用户身份认证,权限授权、加密、会话管理等功能,组成了一个通用的安全认证框架        使用shiro来实现权限管理,可以非常有效的提高团队开发效率,从而降低开发成本以及维护成本。

什么是shiro?

Shiro是apache的一个开源权限管理的框架,它实现用户身份认证,权限授权、加密、会话管理等功能,组成了一个通用的安全认证框架

        使用shiro来实现权限管理,可以非常有效的提高团队开发效率,从而降低开发成本以及维护成本。

shiro 的基本架构

Subject:主体,subject记录了当前操作的用户信息。我们对这个subject进行认证和授权。

 

SecurityManager:安全管理者,主体进行认证和授权都 是通过securityManager进行。是shiro的核心。

 

Authenticator:用于用户登录认证的,主体的认证是否通过都是由authenticator来做的。

 

Authorizer:授权鉴权,主体进行授权是否通过由authorizer来做的。

 

Session Manager:web应用中需要对session进行会话管理,那么shiro本身也有session管理的方式,用sessionManager来做的。这个可以用来实现单点登录sso。

 

SessionDao:  统一管理session,不论是分布式还是单应用都帮你做好了。比如对session的塞入一个用户和删除一个用户,而这个是用的redis这样的缓存的话,就要用到sessionDAO。

 

Cache Manager:缓存管理者,将用户权限信息缓存起来,这样可以提高性能,不必频繁地读取数据库,减少数据库压力。ehcache,redis等

 

realm:领域,范围,可以理解为数据源,认证和授权的相关数据都是存在这里的。

 

cryptography:密码管理,提供各种类型的加密算法,比如MD5等。

 

使用shiro所需要的jar包(基础)

<shiro.version>1.3.2</shiro.version>

 

<!-- shiro -->

<dependency>

<groupId>org.apache.shiro</groupId>

<artifactId>shiro-core</artifactId>

<version>${shiro.version}</version>

</dependency>

<dependency>

<groupId>org.apache.shiro</groupId>

<artifactId>shiro-web</artifactId>

<version>${shiro.version}</version>

</dependency>

<dependency>

<groupId>org.apache.shiro</groupId>

<artifactId>shiro-spring</artifactId>

<version>${shiro.version}</version>

</dependency>

<dependency>

<groupId>org.apache.shiro</groupId>

<artifactId>shiro-ehcache</artifactId>

<version>${shiro.version}</version>

</dependency>

<dependency>

<groupId>org.apache.shiro</groupId>

<artifactId>shiro-quartz</artifactId>

<version>${shiro.version}</version>

</dependency>

 

 

相关文章
|
前端开发 Java
SpringBoot之数组,集合,日期参数的详细解析
SpringBoot之数组,集合,日期参数的详细解析
325 0
|
Java 测试技术 Apache
用JMeter做接口压力测试
JMeter是Apache组织开发的基于Java的压力测试工具,它是用 Java 语言编写的
|
Ubuntu Java 调度
百度搜索:蓝易云【ubuntu系统安装SGE教程】
请注意,以上是一般的SGE安装步骤,具体步骤可能会因SGE版本和系统配置而有所不同。建议在安装过程中遵循官方文档或其他可靠资源,并根据实际情况进行相应的配置调整。
268 0
|
存储 NoSQL Java
Redis如何处理Hash冲突?
在 Redis 中,哈希表是一种常见的数据结构,通常用于存储对象的属性,对于哈希表,最常遇到的是哈希冲突,那么,当 Redis遇到Hash冲突会如何处理?这篇文章,我们将详细介绍Redis如何处理哈希冲突,并探讨其性能和实现细节。
289 1
|
数据可视化 图形学 Python
|
自然语言处理 Ubuntu 编译器
使用 `byacc`(Berkeley Yacc)在Linux中构建编译器
本文介绍了如何在Linux中使用`byacc`构建编译器。首先,通过包管理器安装`byacc`,如在Debian/Ubuntu上使用`apt-get install byacc`,在Red Hat/CentOS/Fedora上使用`yum`或`dnf`。接着,定义编程语言的语法(如示例中的简单计算器`calc.y`),然后运行`byacc -d calc.y`生成C代码。最后,编译生成的文件并运行。虽然示例简单,但展示了使用`byacc`创建编译器的基本步骤,实际项目中需处理更复杂语法和实现语义动作。
|
JavaScript 定位技术
BIGEMAP地图VUE中引入
BIGEMAP地图VUE中引入
317 0
BIGEMAP地图VUE中引入
|
SQL 存储 数据建模
SQL 语言:对象关系数据模型
SQL 语言:对象关系数据模型
169 3
|
XML 前端开发 Java
一份 Spring Boot 项目搭建模板
一份 Spring Boot 项目搭建模板 前言 建立一个全新的项目,或者把旧的庞大的项目,进行拆分成多个项目。在建立新的项目中,经常需要做一
一份 Spring Boot 项目搭建模板
|
人工智能
马尔可夫链预测 (Markov Chain)
马尔可夫链预测 (Markov Chain)
486 0