Java安全(权限)框架 - Shiro 功能讲解 架构分析
Java安全(权限)框架 - Shiro 功能讲解 架构分析
作者 : Stanley 罗昊
【转载请注明出处和署名,谢谢!】
简述Shiro
Shiro出自公司Apache(阿帕奇),是java的一个安全和权限框架;
在这之前,我想各位应该也学过 SpringMvc、struts2。他们都是web的mvc框架,紧接着一些ORM框架,比如Mybatis 、Hibernate,而这个Shiro更加主流、也更加简单易用,它不但是适用于javaSE环境,也适用于javaEE环境;
Shiro可以完成如:认证、授权、加密、会话管理、与web集成、缓存等;
Shiro功能简介
Authentication
认证,说白了就是登陆,我们可以利用Shiro完成登陆,登录时的密码匹配,就是Shiro帮我们完成的
Authorization
授权,当我们点一个连接或一个按钮的时候,Shiro会帮我们判断你有没有这个权限;
SessionManagement
Shiro向我们提供的Session;
我们在web环境下可以使用SesCryptsion,当然,这个是httpSession,如果使用Shiro的话,即便你身处非web环境下,我们也可以使用Session,那个Session,就是Shiro给我们提供的;
Cryptography
加密,到后面会有具体详解;
Web Support
可以很容易的跟,JavaEE应用进行集成;
Caching
可以在多线程的情况下进行授权,认证;
Tssting
测试
Caching
Shiro提供了缓存模块,让我们的运行速度更快;
Run As
让,已经登录的用户,以另外一个用户的身份,来操作当前的系统;
RememberMe
记住我
Shiro架构

从外部看,最主要的组件有两个:
SecunityManager 、 Realm
架构图讲解:
Application Code,当应用程序去访问Shiro的时候,那么就一定会是Subject(这个就表示当前用户),比如你等没登录、如何登陆、你是不是可以访问某一个权限、都是要去搞这个Subject,它是一个门面;
而,后面的核心是SecurityManager,它就像一个大管家一样,它管理者Shiro的各个组件;
当我们需要访问一些安全数据的时候,比如:获取用户信息,获取权限信息,我们就需要用到这个Reaim,它相当于是一个SecrityDAO
Shiro架构详细分析
subject:应用代码直接交互点对象是Subject,也就是说Shiro的对外API核心就是Subject。Subject代表了当前“用户”,这个用户不一定是一个具体的人,与当前应用交互的任何东西都是Subject,如网络爬虫、机器人等;
与Subject的交互都会委托给SecurityManager才是实际的执行者;
SecurityManager:安全管理器;即所有与安全有关的操作都会与SecurityManager交互;且其管理所有Subject;可以看出他是Shiro的核心,它负责与Shiro的其他组装件进行交互,它相当于SpringMVC中的DispatcherServlet
Realm:Shiro从Realm获取安全数据(如用户、角色、权限),就是说SecurityManager需要验证用户身份,那么它需要从Realm得到用户相应的角色/权限进行验证用户是否能进行操作;可以把Realm看成DataSource
Java安全(权限)框架 - Shiro 功能讲解 架构分析的更多相关文章
- Java 权限框架 Shiro 实战二:与spring集成、filter机制
转自:https://www.cnblogs.com/digdeep/archive/2015/07/04/4620471.html Shiro和Spring的集成,涉及到很多相关的配置,涉及到shi ...
- Java 权限框架 Shiro 实战一:理论基础
Apache Shiro 官网地址:http://shiro.apache.org/ Apache Shiro is a powerful and easy-to-use Java security ...
- 权限框架 - shiro 授权demo
之前说了权限认证,其实也就是登录验证身份 这次来说说shiro的授权 shiro可以针对角色授权,或者访问资源授权 两者都行,但是在如今的复杂系统中,当然使用后者,如果你是小系统或者私活的话,前者即可 ...
- 权限框架 - shiro 简单入门实例
前面的帖子简单的介绍了基本的权限控制,可以说任何一个后台管理系统都是需要权限的 今天开始咱们来讲讲Shiro 首先引入基本的jar包 <!-- shiro --> <dependen ...
- 权限框架 - shiro 自定义realm
上篇文章中是使用的默认realm来实现的简单登录,这仅仅只是个demo,真正项目中使用肯定是需要连接数据库的 首先创建自定义realm文件,如下: 在shiro中注入自定义realm的完全限定类名: ...
- 【.NET Core项目实战-统一认证平台】第一章 功能及架构分析
[.NET Core项目实战-统一认证平台]开篇及目录索引 从本文开始,我们正式进入项目研发阶段,首先我们分析下统一认证平台应该具备哪些功能性需求和非功能性需求,在梳理完这些需求后,设计好系统采用的架 ...
- JAVA构建高并发商城秒杀系统——架构分析
面试场景 我们打算组织一个并发一万人的秒杀活动,1元秒杀100个二手元牙刷,你给我说说解决方案. 秒杀/抢购业务场景 商品秒杀.商品抢购.群红包.抢优惠劵.抽奖....... 秒杀/抢购业务特点 秒杀 ...
- java ssm 后台框架平台 项目源码 websocket IM quartz springmvc
A代码编辑器,在线模版编辑,仿开发工具编辑器,pdf在线预览,文件转换编码B 集成代码生成器 [正反双向](单表.主表.明细表.树形表,快速开发利器)+快速表单构建器freemaker模版技术 ,0个 ...
- java ssm 后台框架平台 项目源码 websocket即时聊天发图片文字 好友群组 SSM源码
官网 http://www.fhadmin.org/D 集成安全权限框架shiro Shiro 是一个用 Java 语言实现的框架,通过一个简单易用的 API 提供身份验证和授权,更安全,更可靠E ...
随机推荐
- Centos6.5DRBD加载失败,系统更换yum源(国内163)
我安装的系统是centos6.5的,要在系统上安装DRBD镜像软件,安装完后,无法加载modprobe drbd. 需要更新kernel. 1,首先,先把yum源更换成国内的,不然无法更新kernel ...
- 一个能拖动,能调整大小,能更新bind值的vue指令-vuedragx
一. 背景说明 开发一个可自定义组件化门户配置页面,期间采用了vue框架作为前端视图引擎,作为一个刚入手vue的萌新,开发第一个功能就遇到了拦路虎.需要一个拖动并且可改变大小的容器盒子.当时查看vue ...
- C#学习(一):委托和事件
预备知识 在学习委托和事件之前,我们需要知道的是,很多程序都有一个共同的需求,即当一个特定的程序事件发生时,程序的其他部分可以得到该事件已经发生的通知. 而发布者/订阅者模式可以满足这种需求.简单来说 ...
- MySql的下载和安装(解压版)
工具/原料 windows系统 一.Mysql的下载 打开浏览器,输入mysql,点击百度搜索,得到搜索结果. 在搜索结果中,选择下面结果,因为浏览器的不同,Mysql官网在搜索结果的 ...
- Linux kernel的中断子系统之(一):综述
返回目录:<ARM-Linux中断系统>. 总结: 一从作为一名驱动工程师角度看,用好中断需要正确认识request_threaded_irq/request_irq关系.中断临界区保护. ...
- 了解mysqlpump工具
Ⅰ.功能分析 1.1 多线程介绍 mysqlpump是MySQL5.7的官方工具,用于取代mysqldump,其参数与mysqldump基本一样 mysqlpump是多线程备份,但只能到表级别,单表备 ...
- 进击Node.js基础(一)
一.前言 1:Node.js本质上是用chrome浏览器 v8引擎 使用c++编写的JS运行环境 2:相比于JS没有浏览器安全级的限制,额外提供了一些系统级的API:文件读写,进程管理,网络通信等. ...
- 学会这15点,让你分分钟拿下Redis数据库
1.Redis简介 REmote DIctionary Server(Redis) 是一个由Salvatore Sanfilippo写的key-value存储系统.Redis是一个开源的使用ANSI ...
- if_else_while_for
import getpass #标准库里要加密密码需要导包getpass.但是getpass在pycharm中不好用,需要在命令窗口中输入才管用. _username = "abc" ...
- TestNG教程网站
比较简明的一些TestNG教程网站 : https://www.jianshu.com/p/74816a200221 http://www.yiibai.com/testng/parameterize ...