Shiro Review——Shiro介绍

一,Shiro整体介绍

shiro是apache的一个开源框架,是一个权限管理的框架,实现 用户认证、用户授权。

spring中有spring security (原名Acegi),是一个权限框架,它和spring依赖过于紧密,没有shiro使用简单。

shiro不依赖于spring,shiro不仅可以实现 web应用的权限管理,还可以实现c/s系统,分布式系统权限管理,shiro属于轻量框架,越来越多企业项目开始使用shiro。

使用shiro实现系统 的权限管理,有效提高开发效率,从而降低开发成本。

shiro架构:

subject:主体,可以是用户也可以是程序,主体要访问系统,系统需要对主体进行认证、授权。

securityManager:安全管理器,主体进行认证和授权都是通过securityManager进行。

authenticator:认证器,主体进行认证最终通过authenticator进行的。

authorizer:授权器,主体进行授权最终通过authorizer进行的。

sessionManager:web应用中一般是用web容器对session进行管理,shiro也提供一套session管理的方式。

SessionDao:  通过SessionDao管理session数据,针对个性化的session数据存储需要使用sessionDao。

cache Manager:缓存管理器,主要对session和授权数据进行缓存,比如将授权数据通过cacheManager进行缓存管理,和ehcache整合对缓存数据进行管理。

realm:域,领域,相当于数据源,通过realm存取认证、授权相关数据。

cryptography:密码管理,提供了一套加密/解密的组件,方便开发。比如提供常用的散列、加/解密等功能。

二,认证流程

测试工程:

如果构造maven 工程,可使用如下依赖:

<dependencies>
		<!-- http://mvnrepository.com/artifact/org.apache.shiro/shiro-core -->
		<dependency>
			<groupId>org.apache.shiro</groupId>
			<artifactId>shiro-core</artifactId>
			<version>1.2.5</version>
		</dependency>
		<!-- http://mvnrepository.com/artifact/org.slf4j/slf4j-log4j12 -->
		<dependency>
			<groupId>org.slf4j</groupId>
			<artifactId>slf4j-log4j12</artifactId>
			<version>1.7.21</version>
		</dependency>

	</dependencies>

shiro的ini配置:

#对用户信息进行配置
[users]
#用户名跟密码
zhangsan=111111
lisi=111111

测试代码:

/**
 * 认证测试
 *
 * @author LiuHuiChao
 *
 */
public class AuthenticationTest {
	// 用户登录和退出
	@Test
	public void testLoginAndLogout() {
		// 读取配置文件,初始化SecurityManager工厂
		Factory<SecurityManager> factory = new IniSecurityManagerFactory(
				"classpath:shiro-first.ini");
		//创建SecurityManager
		SecurityManager securityManager=factory.getInstance();

		//将SecurityManager设置到当前的运行环境中
		SecurityUtils.setSecurityManager(securityManager);

		//从SecurityUtils构造创建一个subject
		Subject subject=SecurityUtils.getSubject();

		//在提交认证前,需要准备token
		UsernamePasswordToken token=new UsernamePasswordToken("zhangsan","111111");

		//执行认证提交
		try {
			subject.login(token);
		} catch (AuthenticationException e) {
			e.printStackTrace();
		}

		boolean IsAuthenticated = subject.isAuthenticated();//是否认证通过

		System.out.println(IsAuthenticated); //ture

		//执行退出操作
		subject.logout();

		//是否认证通过
		System.out.println(subject.isAuthenticated()); //false

	}

}

代码执行流程分析:

1、通过ini配置文件创建securityManager

2、调用subject.login方法主体提交认证,提交的token

3、securityManager进行认证,securityManager最终由ModularRealmAuthenticator进行认证。

4、ModularRealmAuthenticator调用IniRealm(给realm传入token) 去ini配置文件中查询用户信息

最后去执行认证的还是realm。

时间: 2024-08-04 09:47:27

Shiro Review——Shiro介绍的相关文章

Apache Shiro权限框架理论介绍

Apache Shiro权限管理框架介绍 Apache Shiro的官网地址如下: http://shiro.apache.org/ Apache Shiro是一个简单易用且强大而灵活的开源Java安全框架,以下简称Shiro.它干净利落地处理身份认证.授权以及企业会话管理和加密.Shiro拥有易于理解的API,你可以快速且容易地使用它来保护任何应用程序--从最小的移动应用程序到最大的web和企业应用程序. Shiro权限基础概念: 安全实体:就是被权限系统保护的对象,比如工资数据. 权限:就是

037 shiro框架的介绍和使用 - bos

官网:shiro.apache.org 一.shiro介绍 1.shiro框架的核心功能:认证.授权.会话管理.加密 2.shiro框架认证流程: 3.涉及的相关概念和类 ApplicationConde,应用程序代码,由开发人员进行开发 Subject,框架提供的接口,代表当前用户对象 SecurityManager,框架提供的接口,代表安全管理器,是shiro框架最核心的对象 Realm,可以开发人员编写,框架也提供一些,类似于DAO,用于访问权限数据 4.导包方式:只要导入shiro-al

Shiro Review——使用ini文件进行授权测试

一,shiro授权 授权流程: 跟用户的认证流程类似,shrio在用户授权的时候,最后还是去Realm获取信息. shiro的三种授权方式: Shiro 支持三种方式的授权: 编程式:通过写if/else 授权代码块完成: Subject subject = SecurityUtils.getSubject(); if(subject.hasRole("admin")) { //有权限 } else { //无权限 } 注解式:通过在执行的Java方法上放置相应的注解完成: @Requ

Shiro Review——自定义Realm实现认证

一,自定义Realm 在之前,使用过下面的ini文件进行认证测试: #对用户信息进行配置 [users] #用户名跟密码 zhangsan=111111 lisi=111111 里面用户的认证信息是写死的,so,now ,来测试下使用自定义Realm来从我们的DB读取User信息,完成用户认证. 首先大致看下Realm的类层级关系: 比如,我们之前使用ini文件中的users配置用户名跟密码的时候,认证和时候使用的Realm就是IniRealm,比如里面的JdbcRealm,我们可以在数据库里面

Shiro Review——权限管理基础知识

只要是有用户参与的系统一般都会有权限管理,权限管理实现对用户的访问控制,按照安全规则或者安全策略控制用户可以访问而且只能访问自己被授权的资源. 权限管理包括用户认证和授权两部分. 一,用户认证 用户去访问系统,系统要验证用户身份的合法性.比较常见的认证方法:1,用户名密码方式:2,指纹识别,比如我们上班打卡:3,基于证书方式: 当系统验证了用户身份的合法性,用户方可访问系统的资源. 1, 用户认证流程 权限管理是基于资源的,当我们去访问资源的时候,先判断这个资源是否允许匿名访问,比如我们访问一个

shiro框架学习-2-springboot整合shiro及Shiro认证授权流程

1. 添加依赖 1 <dependency> 2 <groupId>org.springframework.boot</groupId> 3 <artifactId>spring-boot-starter-web</artifactId> 4 </dependency> 5 <dependency> 6 <groupId>mysql</groupId> 7 <artifactId>mys

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

一.什么是Shiro Apache Shiro是一个强大易用的Java安全框架,提供了认证.授权.加密和会话管理等功能: 认证 - 用户身份识别,常被称为用户"登录": 授权 - 访问控制: 密码加密 - 保护或隐藏数据防止被偷窥: 会话管理 - 每用户相关的时间敏感的状态. 对于任何一个应用程序,Shiro都可以提供全面的安全管理服务.并且相对于其他安全框架,Shiro要简单的多. 二.Shiro的架构介绍 首先,来了解一下Shiro的三个核心组件:Subject. Security

Shiro权限控制框架入门1:Shiro的认证流程以及基本概念介绍

前言:我在最开始学习Shiro这个框架时,在网上搜索到的一个介绍比较全面的教程是:<跟我学Shiro>系列教程.但是在我看了他写的前几篇文章后,我发现虽然他在这个系列教程中把shiro的一些特性介绍地非常全面详细,但是整个教程的叙述方式还是有很大缺陷的.文章与文章之间并没有很好地串联起来,每篇文章介绍的东西都过于分散了,如果是对shiro完全不了解的新手来看的话完全是一场噩梦.就像一个网友评价的这样: 看了看这个教程,看完之后都想放弃shiro了,完全看不懂,后来百度了很多别的资料才理解了sh

shiro教程(2)- shiro介绍

shiro教程系列 shiro教程(3)-shiro授权 1 shiro介绍  1.1 什么是shiro Shiro是apache旗下一个开源框架,它将软件系统的安全认证相关的功能抽取出来,实现用户身份认证,权限授权.加密.会话管理等功能,组成了一个通用的安全认证框架. 1.2 为什么要学shiro 既然shiro将安全认证相关的功能抽取出来组成一个框架,使用shiro就可以非常快速的完成认证.授权等功能的开发,降低系统成本. shiro使用广泛,shiro可以运行在web应用,非web应用,集