Shiro Review——Shiro介绍
来源:互联网 发布:mac更新战网agent卡住 编辑:程序博客网 时间:2024/06/05 08:03
一,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=111111lisi=111111
测试代码:
/** * 认证测试 * * @author LiuHuiChao * */public class AuthenticationTest {// 用户登录和退出@Testpublic void testLoginAndLogout() {// 读取配置文件,初始化SecurityManager工厂Factory<SecurityManager> factory = new IniSecurityManagerFactory("classpath:shiro-first.ini");//创建SecurityManagerSecurityManager securityManager=factory.getInstance();//将SecurityManager设置到当前的运行环境中SecurityUtils.setSecurityManager(securityManager);//从SecurityUtils构造创建一个subjectSubject subject=SecurityUtils.getSubject();//在提交认证前,需要准备tokenUsernamePasswordToken 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。
- Shiro Review——Shiro介绍
- Shiro Review——权限管理基础知识
- Shiro Review——自定义Realm实现认证
- Shiro Review——使用ini文件进行授权测试
- Shiro Review——自定义Realm实现授权
- Shiro——shiro架构
- shiro介绍
- Shiro 介绍
- shiro介绍
- shiro基础学习(二)—shiro认证
- shiro基础学习(三)—shiro授权
- shiro—安全配置
- Shiro—001
- Shiro入门—认证
- Shiro入门—授权
- shiro
- shiro
- Shiro
- unity5 动态创建时,比例保持不变
- SQLite的命令行操作
- 关于win8.1开热点
- iOS应用发布篇二(开发者账号购买)
- intelij IDEA-2016.3.4(或PhpStorm10,WebStorm11)的几个自己用过的破解方法
- Shiro Review——Shiro介绍
- 教你如何利用php.exe运行php文件
- Binder连接池
- Range Sum Query - Immutable
- linux中使用xshell远程连接
- 完美洗牌:数论+分治+数组循环移动
- 剑指offer(四十五)之二叉树的深度
- 10_Flink Streaming jobSubmit
- CString常用函数用法