【shiro】入门程序
2017-12-19 11:42
239 查看
Apache Shiro是一个强大的且易用的java安全框架,执行身份验证、授权、密码学和会话管理。使用Shiro的易于理解的API,可以快速,轻松的获得任何应用程序,从最小的移动应用程序到最大的网络和企业应用程序。
Shiro是一个开源框架,一个权限管理的框架,在Spring中有Spring security,是一个权限框架,它和Spring依赖过于紧密,虽然功能强大,但是没有shiro简单。shiro实现系统的权限管理,有效提高开发效率,降低开发成本。
♦shiro架构
shiro的核心组件:subject, SecurityManager,Realms.
1、Subject:
当前操作用户,但是在shiro中,不仅仅指人,也可以是第三方进程、后台账户,或其他类似事物。它仅仅意味着当前和软件交互的东西。但大部分情况下指用户。
2、SecurityManager:
它是shiro框架的核心,典型的facade模式,shiro通过SecurityManager来管理内部组件实例,并通过它来提供安全管理的各种服务。
3、Realm:
它充当了shiro与应用安全数据间的桥梁或连接器。也就是说,当对用户执行认证(登陆)和授权(访问控制)验证时,shiro会从应用配置的realm中查找用户及其权限信息。
realm实质上是一个安全安全的dao,它封装了数据源的连接细节,并在需要时将相关数据提供给shiro,当配置shiro时,必须至少指定一个realm,用户认证和授权。
Shiro内置了可以链接大量安全数据源的realm,如LDAP、关系数据库JDBC,类似ini文本的配置资源,以及属性文件等。如果缺省的realm不能满足需求,可以插入代表自定义数据源的自己的realm实现。
4、authenticator:
认证器,主体进行认证最终通过Authticator进行的。
5、authorizer:
授权器,主题进行授权最终通过authorizer。
6、sessionManager:
web应用中一般是用web容器对session进行管理,shiro也提供一套session管理的方式。
7、sessionDao:
通过sessiondao管理session数据。针对个性化的session数据存储需要用到sessionDao.
8、cache Manager:
缓存管理器,主要对session和授权数据进行缓存,比如将授权数据通过cacheManager进行缓存管理,和ehcache整合对缓存数据进行管理。
9、realm :
域,领域,相当于数据源,通过realm存取认证,授权相关数据。在realm中存储授权和认证的逻辑。
10、cryptography:
密码管理,提供了一套加密、解密的组件,方便开发。比如提供常用的散列,加密,解密等功能。
♦入门程序:
业务:验证用户登陆用的账号和密码是否正确。
认证流程:
代码:
1、shiro-first.ini(可以分组)
2、代码:
小结:
这篇博客先站在巨人的肩膀上吧。感谢教程!
Shiro是一个开源框架,一个权限管理的框架,在Spring中有Spring security,是一个权限框架,它和Spring依赖过于紧密,虽然功能强大,但是没有shiro简单。shiro实现系统的权限管理,有效提高开发效率,降低开发成本。
♦shiro架构
shiro的核心组件:subject, SecurityManager,Realms.
1、Subject:
当前操作用户,但是在shiro中,不仅仅指人,也可以是第三方进程、后台账户,或其他类似事物。它仅仅意味着当前和软件交互的东西。但大部分情况下指用户。
2、SecurityManager:
它是shiro框架的核心,典型的facade模式,shiro通过SecurityManager来管理内部组件实例,并通过它来提供安全管理的各种服务。
3、Realm:
它充当了shiro与应用安全数据间的桥梁或连接器。也就是说,当对用户执行认证(登陆)和授权(访问控制)验证时,shiro会从应用配置的realm中查找用户及其权限信息。
realm实质上是一个安全安全的dao,它封装了数据源的连接细节,并在需要时将相关数据提供给shiro,当配置shiro时,必须至少指定一个realm,用户认证和授权。
Shiro内置了可以链接大量安全数据源的realm,如LDAP、关系数据库JDBC,类似ini文本的配置资源,以及属性文件等。如果缺省的realm不能满足需求,可以插入代表自定义数据源的自己的realm实现。
4、authenticator:
认证器,主体进行认证最终通过Authticator进行的。
5、authorizer:
授权器,主题进行授权最终通过authorizer。
6、sessionManager:
web应用中一般是用web容器对session进行管理,shiro也提供一套session管理的方式。
7、sessionDao:
通过sessiondao管理session数据。针对个性化的session数据存储需要用到sessionDao.
8、cache Manager:
缓存管理器,主要对session和授权数据进行缓存,比如将授权数据通过cacheManager进行缓存管理,和ehcache整合对缓存数据进行管理。
9、realm :
域,领域,相当于数据源,通过realm存取认证,授权相关数据。在realm中存储授权和认证的逻辑。
10、cryptography:
密码管理,提供了一套加密、解密的组件,方便开发。比如提供常用的散列,加密,解密等功能。
♦入门程序:
业务:验证用户登陆用的账号和密码是否正确。
认证流程:
代码:
1、shiro-first.ini(可以分组)
[users] zhangsan=111 lisi=22 [users] name=1 name2=2
2、代码:
// 用户登陆和退出 @Test public void testLoginAndLogout() { // 创建securityManager工厂,通过ini配置文件创建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) { // TODO Auto-generated catch block e.printStackTrace(); } //是否认证通过 boolean isAuthenticated = subject.isAuthenticated(); System.out.println("是否认证通过:" + isAuthenticated); //退出操作 subject.logout(); //是否认证通过 isAuthenticated = subject.isAuthenticated(); System.out.println("是否认证通过:" + isAuthenticated); }
小结:
这篇博客先站在巨人的肩膀上吧。感谢教程!
相关文章推荐
- Shiro 学习记录 Shiro 入门程序
- shiro认证入门程序
- shiro授权入门程序
- shiro授权入门程序
- shiro学习(一)---认证入门程序
- shiro入门级小程序
- 微信小程序开发入门
- Shiro入门这篇就够了【Shiro的基础知识、回顾URL拦截】
- 爬虫Scrapy-02入门程序
- 很不多的ICE架构入门学习例子-ping程序
- 1、Spring框架入门程序
- 30、shiro框架入门2,关于Realm
- JavaSE第一讲:JavaSE入门、JDK的下载与安装、第一个Java程序、Java程序的编译与执行
- JavaSE第一讲:JavaSE入门、JDK的下载与安装、第一个Java程序、Java程序的编译与执行
- 【学习笔记】零基础C#窗口程序开发入门
- ASP小偷(远程数据获取)程序入门教程
- 如何入门微信小程序开发
- Webservice介绍,CXF入门程序
- Linux ESP32 开发入门 配置和烧录一个程序
- MiniUI快速入门教程(二)编写第一个MiniUI程序:Hello, world!