Apache Shiro Realms 中文说明文档

翻译 ALLEN ⋅ 于 2019-09-10 12:04:25 ⋅ 65 阅读

这是一篇协同翻译


一个 Realm 是一个能访问特定应用安全数据的组件,比如 users(用户表),roles (角色表)和 permissions(权限表)。这 Realm 把特定应用的数据转换成 Shiro 能理解的数据格式,所以 Shiro 转而提供一个单一的易于理解的 Subject 可编程 API,而不管数据源有多少个或你的数据是怎样的特定于应用程序。

各Realms 通常与数据源是 1 对 1 的关系,比如关系型数据库,LDAP 目录,文件系统,或者其他类似的资源。同样地,Realm 接口的实现使用特定数据源的 API 来发现授权数据(roles-角色, permissions-权限),比如 JDBC,File IO,Hibernate 或者 JPA,或者 任意其他数据访问 API。

一个 Realm 本质上是 security-specific(特定安全的) DAO

因为这些数据源的大部分通常不仅存储授权数据(比如roles-角色和permissions-权限)也存储验证数据(凭证,比如密码),每个Shiro Realm 都可以执行验证和授权操作。

Realm 配置

如果使用 Shiro’s INI 文件配置,那么你可以像其他任意对象一样在 [main] 片段 定义和引用 Realms ,但是它们是以显示或者隐式形式在 securityManager 上进行配置。

显示赋值

基于目前为止的 INI 配置的知识,这是一个显而易见的配置方式。定义一个或多个 Realms 之后,你可以在 securityManager 对象的集合属性上设置它们。

比如:

fooRealm = com.company.foo.Realm
barRealm = com.company.another.Realm
bazRealm = com.company.baz.Realm

securityManager.realms = $fooRealm, $barRealm, $bazRealm

显示赋值是确定无疑的 - 你不仅可以控制它们用于认证和授权的顺序而且还可以准确控制那个 realms 被使用。Realm 顺序的影响在认证一章中的 认证序列 一节详细描述。

点赞
回复数量: 0
    暂无评论~~
    • 请注意单词拼写,以及中英文排版,参考此页
    • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`, 更多语法请见这里 Markdown 语法
    • 支持表情,使用方法请见 Emoji 自动补全来咯,可用的 Emoji 请见 :metal: :point_right: Emoji 列表 :star: :sparkles:
    • 上传图片, 支持拖拽和剪切板黏贴上传, 格式限制 - jpg, png, gif
    • 发布框支持本地存储功能,会在内容变更时保存,「提交」按钮点击时清空
      请勿发布不友善或者负能量的内容。与人为善,比聪明更重要!
    Ctrl+Enter