Shiro 学习笔记(一)——shiro简介
Apache Shiro 是一个安全框架。说白了,就是进行一下 权限校验,判断下这个用户是否登录了,是否有权限去做这件事情。
Shiro 可以帮助我们完成:认证、授权、加密、会话管理、与web 集成、缓存等。
其基本功能点 如下图:

Authentication : 身份认证/登录,验证用户是不是拥有相应的身份
Authorization : 授权,即权限验证,验证某个已认证的用户是否拥有某个权限;即判断用户是否能做事情,常见的如:验证某个用户是否拥有某个角色,或者 细粒度的验证某个用户对某个资源是否具有某个权限
Session Manager:会话管理,即用户登录后就是一次会话,在没有退出之前,他的所有信息都会在会话中
Cryptography:加密,保护数据的安全性,如密码加密存储到数据库
Web Support:可以非常容易的集成到web 环境中
Caching:缓存,比如用户登录后,其用户信息、拥有的角色/权限 不必每次去查,这样可以提高效率。
Concurrency: shiro 支持多线程应用的并发验证,即如在一个线程中开启另一个线程,能把权限自动传播过去
Testing :提供测试支持
Run As: 允许一个用户假装另一个用户(如果他们允许)的身份进行访问
Remember Me:即一次登录后,下次再来的话不用登录了
Shiro 不会去维护用户、维护权限,这些需要自己去设计/提供,然后通过相应的接口注入给 shiro 即可
从应用程序的角度来观察如何使用 shiro 完成工作,如下图

应用程序直接交互的对象式Subject
Subject:主体,代表了当前用户(即与当前应用交互的对象,如爬虫、机器人等)。所有的Subject 都绑定到了 SecurityManager,与Subject的所有交互都会委托给SecurityManager;可以把Subject认为是一个门面;SecurityManager才是实际的执行者;
SecurityManager:安全管理器,即所有与安全有关的操作都会与 SecurityManager交互。类似SpringMVC的DispatcherServlet 前端控制器
Realm:域,Shiro 是从 Realm 获取安全数据(如用户、角色、权限),就是说SecurityManager 要验证用户身份,那么它需要从Realm 获取相应的用户进行比较以确定用户身份是否合法,也需要从Realm 得到用户相应的角色/权限进行验证用户是否能进行操作;可以把Realm 看成DataSource
对我们而言,一个shiro 应用:
1、应用代码 通过 Subject 来进行认证和授权,而Subject又委托给SecurityManager
2、我们需要给Shiro 的SecurityManager 注入Realm,从而让SecurityManager 能得到合法的用户及其权限进行判断
总结:Shiro 不提供维护用户/权限,而是通过Realm让开发人员自己注入
Shiro架构,如下图:

注:本学习笔记来源于开涛的《跟我学Shiro》,详细请看原博客
Shiro 学习笔记(一)——shiro简介的更多相关文章
- Apcahe Shiro学习笔记(一):简介及运行官方Demo
一.Apache Shrio: apache shiro 是一个功能强大和易于使用的Java安全框架,为开发人员提供一个直观而全面的的解决方案的认证,授权,加密,会话管理. 支持认证跨一个或多个数据源 ...
- Shiro学习笔记四(Shiro集成WEB)
这两天由于家里出了点事情,没有准时的进行学习.今天补上之前的笔记 -----没有学不会的技术,只有不停找借口的人 学习到的知识点: 1.Shiro 集成WEB 2.基于角色的权限控制 3.基于权限的控 ...
- Shiro学习笔记五(Shiro标签,及通配符)
1.首先是导入标签库 <%@taglib prefix="shiro" uri="http://shiro.apache.org/tags" %> ...
- Shiro学习笔记(5)——web集成
Web集成 shiro配置文件shiroini 界面 webxml最关键 Servlet 測试 基于 Basic 的拦截器身份验证 Web集成 大多数情况.web项目都会集成spring.shiro在 ...
- shiro学习笔记_0600_自定义realm实现授权
博客shiro学习笔记_0400_自定义Realm实现身份认证 介绍了认证,这里介绍授权. 1,仅仅通过配置文件来指定权限不够灵活且不方便.在实际的应用中大多数情况下都是将用户信息,角色信息,权限信息 ...
- Shiro学习笔记总结,附加" 身份认证 "源码案例(一)
Shiro学习笔记总结 内容介绍: 一.Shiro介绍 二.subject认证主体 三.身份认证流程 四.Realm & JDBC reaml介绍 五.Shiro.ini配置介绍 六.源码案例 ...
- C#.NET学习笔记1---C#.NET简介
C#.NET学习笔记1---C#.NET简介 技术qq交流群:JavaDream:251572072 教程下载,在线交流:创梦IT社区:www.credream.com -------------- ...
- Linux学习笔记-Linux系统简介
Linux学习笔记-Linux系统简介 UNIX与Linux发展史 UNIX是父亲,Linux是儿子. UNIX发行版本 操作系统 公司 硬件平台 AIX IBM PowerPC HP-UX HP P ...
- shiro学习笔记_0100_shiro简介
前言:第一次知道shiro是2016年夏天,做项目时候我要写springmvc的拦截器,申哥看到后,说这个不安全,就给我捣鼓了shiro,我就看了下,从此认识了shiro.此笔记是根据网上的视频教程记 ...
随机推荐
- Strcmp(字符串1,字符串2)函数 Sizeof && strlen() Substr(a,b)
Strcmp(字符串1,字符串2)函数 { strcmp函数是比较两个字符串的大小,返回比较的结果.一般形式是: i=strcmp(字符串,字符串); 其中,字符串1.字符串2均可为字符串常量或变量 ...
- dotNet开发游戏微端
需求分析 功能要求 当玩家使用不支持 unity webplayer 的浏览器进入游戏时,让玩家通过微端玩游戏. 确保微端的功能和页游戏功能一致. 大体功能就是为unity web game开发微端, ...
- Android中常用的布局
一般分为5大类. Android中所有的空间第一字母都是大写 1.线性布局 LinearLayout 2.相对布局 RelativeLayout 3.帧布局--分层显示 FrameLayout 4. ...
- java 22 - 6 多线程之线程调度和设置线程的优先级
线程调度 假如我们的计算机只有一个 CPU,那么 CPU 在某一个时刻只能执行一条指令,线程只有得到 CPU时间片,也就是使用权,才可以执行指令. 那么Java是如何对线程进行调用的呢? 线程有两种调 ...
- 画图解释 SQL join 语句
转:http://blog.jobbole.com/40443/ 本文由 伯乐在线 - 奇风余谷 翻译.未经许可,禁止转载!英文出处:Jeff Atwood.欢迎加入翻译组. 我认为 Ligaya T ...
- angular的uiRouter服务学习(5) --- $state.includes()方法
$state.includes方法用于判断当前激活状态是否是指定的状态或者是指定状态的子状态. $state.includes(stateOrName,params,options) $state.i ...
- 洛谷 U4792 Acheing 单调队列
U4792 Acheing 5通过 43提交 题目提供者Acheing 标签 难度尚无评定 提交 最新讨论 暂时没有讨论 题目背景 题目并没有什么含义,只是想宣传一下自己的博客,Acheing.com ...
- noip2008 双栈排序
题目描述 Description \(Tom\)最近在研究一个有趣的排序问题.如图所示,通过\(2\)个栈\(S_1\)和\(S_2\),\(Tom\)希望借助以下\(4\)种操作实现将输入序列升序排 ...
- android 打Patch的方法 .
http://blog.csdn.net/sunyubo458/article/details/6680840 作为程序员,了解diff&patch命 令是非常必要的.比如说我们发现某个项目有 ...
- 80端口未占用,apache无法启动解决办法
网上很多关于apache无法启动的原因,新手遇到最多的是80端口被占用. 今天为了解决apache和tomcat端口共存问题,修改了httpd.conf的配置,由于增加位置没有做明显标识,重启apac ...