2.1.1    Subject
Subject一词是一个安全术语,其基本意思是“当前的操作用户”。称之为“用户”并不准确,因为“用户”一词通常跟人相关。在安全领域,术语“Subject”可以是人,也可以是第三方进程、后台帐户(Daemon Account)、定时作业(Corn Job)或其他类似事物。它仅仅意味着“当前跟软件交互的东西”。但考虑到大多数目的和用途,你可以把它认为是Shiro的“用户”概念。

在程序中你都能轻易的获得Subject,允许在任何需要的地方进行安全操作。每个Subject对象都必须与一个SecurityManager进行绑定,你访问Subject对象其实都是在与SecurityManager里的特定Subject进行交互。

2.1.2    SecurityManager
Subject的“幕后”推手是SecurityManager。Subject代表了当前用户的安全操作,SecurityManager则管理所有用户的安全操作。它是Shiro框架的核心,充当“保护伞”,引用了多个内部嵌套安全组件,它们形成了对象图。但是,一旦SecurityManager及其内部对象图配置好,它就会退居幕后,应用开发人员几乎把他们的所有时间都花在Subject API调用上。
那么,如何设置SecurityManager呢?嗯,这要看应用的环境。例如,Web应用通常会在Web.xml中指定一个Shiro Servlet Filter,这会创建SecurityManager实例,如果你运行的是一个独立应用,你需要用其他配置方式,但有很多配置选项。
一个应用几乎总是只有一个SecurityManager实例。它实际是应用的Singleton(尽管不必是一个静态Singleton)。跟Shiro里的几乎所有组件一样,SecurityManager的缺省实现是POJO,而且可用POJO兼容的任何配置机制进行配置 - 普通的Java代码、Spring XML、YAML、.properties和.ini文件等。基本来讲,能够实例化类和调用JavaBean兼容方法的任何配置形式都可使用。

2.1.3    Realms
Shiro的第三个也是最后一个概念是Realm。Realm充当了Shiro与应用安全数据间的“桥梁”或者“连接器”。也就是说,当与像用户帐户这类安全相关数据进行交互,执行认证(登录)和授权(访问控制)时,Shiro会从应用配置的Realm中查找很多内容。
从这个意义上讲,Realm实质上是一个安全相关的DAO:它封装了数据源的连接细节,并在需要时将相关数据提供给Shiro。当配置Shiro时,你必须至少指定一个Realm,用于认证和(或)授权。配置多个Realm是可以的,但是至少需要一个。
Shiro内置了可以连接大量安全数据源(又名目录)的Realm,如LDAP、关系数据库(JDBC)、类似INI的文本配置资源以及属性文件 等。如果缺省的Realm不能满足需求,你还可以插入代表自定义数据源的自己的Realm实现。

象其他内部组件一样,由SecurityManager来管理如何使用Realms来获取安全的身份数据。

转自:http://blog.csdn.net/peterwanghao/article/details/8015571

Shiro框架中有三个核心概念:Subject ,SecurityManager和Realms。相关推荐

  1. php框架所用到的核心概念,【PHP】PHP现代框架代表-Laravel框架核心技术特性

    一.php语言特点及发展现状 1.服务端脚本语言,自由度太大 ,一个业务逻辑可言写在模型里,控制器里,也可以单独封装成一个类,甚至可以嵌入到html里,这样势必会造成混乱,业务逻辑散落在各处,尤其对于 ...

  2. Spring框架(二) 底层架构核心概念解析-四万字你值得一看

    本篇文章将对Spring底层的一些概念做一些简单的分析 , 也是为了方便后续在阅读源码的时候更加的方便 BeanDefintion BeanDefintion是一个接口 , 它表示一个Bean的定义 ...

  3. Apache Shiro 框架简介

    一.什么是Shiro Apache Shiro是一个强大易用的Java安全框架,提供了认证.授权.加密和会话管理等功能: 认证 - 用户身份识别,常被称为用户"登录": 授权 ...

  4. shiro框架基础--shiro框架概念及原理

    一 shiro的简介 shiro是apache的一个开源框架,是一个权限管理的框架,实现 用户认证.用户授权. 二 shiro的架构图 authenticator:认证器,主体进行认证最终通过auth ...

  5. Zookeeper简介及核心概念

    一.Zookeeper简介 Zookeeper 是一个开源的分布式协调服务,目前由 Apache 进行维护.Zookeeper 可以用于实现分布式系统中常见的发布/订阅.负载均衡.命令服务.分布式协调 ...

  6. VueX核心概念与详细实例

    目录标题 一.什么是Vuex? 二.Vuex的五个核心概念 三.核心概念及实例详解 1. State 代码示例 2. Getters 代码示例 3. Mutations 代码示例 4. Actions ...

  7. 聊聊 Pulsar: Pulsar 的核心概念与基础架构

    一.Pulsar 介绍 Apache Pulsar 是 Apache 软件基金会的顶级项目,是下一代云原生分布式消息流平台,集消息.存储.轻量化函数式计算为一体,采用计算与存储分离架构设计,支持多租户 ...

  8. 【vue2.0进阶】轻松理解Vuex的3个核心概念

    上一节前端君和大家一起认识了Vuex,我们了解了Vuex是一个提供状态管理机制,相比使用传统的全局对象,它有两大优点,一个是它的状态存储是响应式的,另一个是要不能随意修改Vuex的状态,必须按照它的规 ...

  9. 以太坊源码解读(1)以太坊核心概念

    一.定义 以太坊是一个开源的带有智能合约功能的公共区块链平台. 特点: 1.支持智能合约,以太坊不是给用户一系列预先设定好的操作,而是充分允许用户按照自己的意愿创建复杂的逻辑操作: 2.以太坊同时还构 ...

  10. 【vue2.0进阶】轻松理解Vuex的3个核心概念及简单应用案例(计算器)

    Vuex是一个提供状态管理机制,相比使用传统的全局对象,它有两大优点,一个是它的状态存储是响应式的,另一个是要不能随意修改Vuex的状态,必须按照它的规矩来办事.最后也了解了它有适用和不适用的业务场景 ...

最新文章

  1. 什么是BeanShell?
  2. ZIL (ZFS intent log) zil.c
  3. (chap8 确认访问用户身份的认证) 基于表单认证
  4. SAP-SD计划行类别解析
  5. VSX-5 VSXMusic 编码听音乐
  6. Android实现通用的ActivityGroup(效果类似Android微博客户端主界面),...
  7. linux 粘贴网站地址,linux 复制粘贴
  8. 【C语言笔记进阶篇】第一章:指针进阶
  9. 【白皮书分享】人工智能“新基建”发展白皮书.pdf(附下载链接)
  10. 博文视点读书节第五日丨IT大咖私房书单继续放送,超级会员返场来袭!
  11. 【android】apk在线升级
  12. 串口调试更方便-安卓串口调试工具(附底层USB源码)
  13. Redis事务特性分析
  14. JS实现网页打印功能
  15. 企业视频远程办公会议通话系统EasyRTC在Windows2012部署运行出现“计算机中丢失VCRUNTIME140.dll”如何解决?
  16. VBA学习_4:运算符
  17. 华工计算机网络平时作业二,华工计算机网络第二次作业.doc
  18. R3LIVE代码详解(四)
  19. fiddler 修改响应数据
  20. labelmx电子监管码条码设计软件

热门文章

  1. mysql导出成execl
  2. 机器学习基石笔记9——机器可以怎样学习(1)
  3. deferred initcalls与模块化
  4. iis6 放置可执行脚本
  5. [连接]研究MSN的一些参考资料(MSNP15)
  6. All Reduce算法汇总
  7. 2019JS必看面试题
  8. 转载金阳光测试:关于产品的三类文档
  9. IOS中常见UI细节和常识
  10. 文本处理 - 测试一个对象是否是类字符串