Apache Shiro参考手册中文版简单的应用程序。一路上我们将讨论 Shiro 的核心概念来帮助你熟悉 Shiro 的设计和 API。 当你遵循本教程时,如果你确实不想编辑文件,你可以得到一个几乎相同的实例应用程序并按照你的意愿引用它。 选择一个位置: 在 Apache Shiro 的版本控制库:https://svn.apache.org/repos/asf/shiro/trunk/samples/quickstart 在 意味着“该事物目前正与软件交互”。对于大多数的意图和目的,你可以把 Subject 看成是 Shiro 的"User"概念。 getSubject()在一个独立的应用程序中调用,可以返回一个在应用程序特定位置的基于用户数据的 Subject,并且在服 务器环境中(例如,Web 应用程序),它获取的 Subject 是基于关联了当前线程或传入请求的用户数据的。 现在你拥有了一个 Subject,你能拿它来做什么? 是为了满足用户的要求和需要。即使该“用户”是另一个软件系统 而不是一个人类,你仍然得编写代码来响应行为,基于当前与你的软件进行交互的人或物。 Shiro 在它自己的设计中体现了这些概念。通过匹配那些对于软件开发人员来说已经很直观的东西,Apache Shiro 几 乎在任何应用程序保持了直观和易用性。 High-Level Overview 在最高的概念层次,Shiro 的架构有0 码力 | 92 页 | 1.16 MB | 1 年前3
Apache Shiro 1.2.x Reference Manual 中文翻译务、守护进程帐户 或者其它。它可简单描述为“当前和软件进行交互的事件”,在大多数情况下,你可以认为它是 一个“人(User)”。 在一个独立的程序中调用 getSubject() 会在程序指定位置返回一个基于用户数据的 Subject, 在服务器环境(如 web 程序)中,它将获取一个和当前线程或请求相关的基于用户数据的 Subject。 现在你得到了Subject,你可以利用它做什么呢? uae ) { //username 不存在,给个错误提示? } catch ( IncorrectCredentialsException ice ) { //password 不匹配,再输入? } catch ( LockedAccountException lae ) { //账号锁住了,不能登入。给个提示? } ... 更多类型异常 ... } catch 是证明一个用户的真实身份。为了证明用户身份,需要提供系统理解和相信的身份信息和证 据。 需要通过向 Shiro 提供用户的身份(principals)和证明(credentials )来判定是否和系统所 要求的匹配。 Principals(身份) 是Subject的“标识属性”,可以是任何与Subject相关的标识,比如说名 称(给定名称)、名字(姓或者昵称)、用户名、安全号码等等,当然像昵称这样的内0 码力 | 196 页 | 2.34 MB | 1 年前3
《Java 应用与开发》课程讲义 - 王晓东Java 数组的主要特点包括以下方面: • 数组是相同数据类型的元素的集合; • 数组中的各元素有先后顺序,它们在内存中按照这个先后顺序连续存放; • 数组的元素用整个数组的名字和它自己在数组中的顺序位置来表示。 例如,a[0] 表示名字为 a 的数组中的第一个元素,a[1] 表示数组 a 的第二个元素, 依次类推。 3.2 一维数组 3.2.1 创建数组 创建 Java 数组一般需经过三个步骤: 1 String str = new String(”asdfzxc”); 2 int strlength = str.length(); //strlength = 7 示例代码:获取字符串某一位置字符 1 char ch = str.charAt(4); //ch = z 示例代码:提取子串 1 String str2 = str1.substring(2); //str2 = ”dfzxc” 对象的任何操作都不影响到原对 象,而是会生成新的对象。 3.6 课后习题 . O 小编程 1. 编写程序,求一个三阶方阵的对角线上各元素之和。 2. 编写程序,从键盘上输入一个字符串和子串开始位置与长度,截取该字符串的子 串并输出。 3. 编写程序,统计用户从键盘输入的字符串中包含的字母、数字和其他字符的个数。 . . . . . . . . . . . . . . . . . . .0 码力 | 330 页 | 6.54 MB | 1 年前3
Hello 算法 1.1.0 Java版书是我对这个问题给出的答案,即使不是最 优解,也至少是一次积极的尝试。本书虽然不足以让你直接拿到 Offer,但会引导你探索数据结构与算法的 “知识地图”,带你了解不同“地雷”的形状、大小和分布位置,让你掌握各种“排雷方法”。有了这些本领, 相信你可以更加自如地刷题和阅读文献,逐步构建起完整的知识体系。 我深深赞同费曼教授所言:“Knowledge isn’t free. You have 仓库。如果已经安装 Git ,可以通过以下命令克隆本仓库: git clone https://github.com/krahets/hello-algo.git 当然,你也可以在图 0‑4 所示的位置,点击“Download ZIP”按钮直接下载代码压缩包,然后在本地解压即 可。 第 0 章 前言 hello‑algo.com 7 图 0‑4 克隆仓库与下载代码 第三步:运行源代码。如图 章 初识算法 hello‑algo.com 12 1. 将扑克牌划分为“有序”和“无序”两部分,并假设初始状态下最左 1 张扑克牌已经有序。 2. 在无序部分抽出一张扑克牌,插入至有序部分的正确位置;完成后最左 2 张扑克已经有序。 3. 不断循环步骤 2. ,每一轮将一张扑克牌从无序部分插入至有序部分,直至所有扑克牌都有序。 图 1‑2 扑克排序步骤 上述整理扑克牌的方法本质上是“插入0 码力 | 378 页 | 18.47 MB | 1 年前3
Hello 算法 1.0.0 Java版书是我对这个问题给出的答案,即使不是最 优解,也至少是一次积极的尝试。本书虽然不足以让你直接拿到 Offer,但会引导你探索数据结构与算法的 “知识地图”,带你了解不同“地雷”的形状、大小和分布位置,让你掌握各种“排雷方法”。有了这些本领, 相信你可以更加自如地刷题和阅读文献,逐步构建起完整的知识体系。 我深深赞同费曼教授所言:“Knowledge isn’t free. You have 仓库。如果已经安装 Git ,可以通过以下命令克隆本仓库: git clone https://github.com/krahets/hello-algo.git 当然,你也可以在图 0‑4 所示的位置,点击“Download ZIP”按钮直接下载代码压缩包,然后在本地解压即 可。 第 0 章 前言 hello‑algo.com 7 图 0‑4 克隆仓库与下载代码 第三步:运行源代码。如图 章 初识算法 hello‑algo.com 12 1. 将扑克牌划分为“有序”和“无序”两部分,并假设初始状态下最左 1 张扑克牌已经有序。 2. 在无序部分抽出一张扑克牌,插入至有序部分的正确位置;完成后最左 2 张扑克已经有序。 3. 不断循环步骤 2. ,每一轮将一张扑克牌从无序部分插入至有序部分,直至所有扑克牌都有序。 图 1‑2 扑克排序步骤 上述整理扑克牌的方法本质上是“插入0 码力 | 376 页 | 17.59 MB | 1 年前3
Hello 算法 1.0.0b5 Java版是我对此问题的给出的答案,即使不是最优解, 也至少是一次积极的尝试。这本书虽然不足以让你直接拿到 Offer ,但会引导你探索数据结构与算法的“知 识地图”,带你了解不同“地雷”的形状大小和分布位置,让你掌握各种“排雷方法”。有了这些本领,相信 你可以更加自如地应对刷题和阅读文献,逐步构建起完整的知识体系。 本书中的代码附有可一键运行的源文件,托管于 github.com/krahets/hello‑algo 第二步:下载代码仓。如果已经安装 Git ,可以通过以下命令克隆本仓库。 git clone https://github.com/krahets/hello-algo.git 当然,你也可以在图 0‑4 所示的位置,点击“Download ZIP”直接下载代码压缩包,然后在本地解压即可。 第 0 章 前言 hello‑algo.com 6 图 0‑4 克隆仓库与下载代码 第三步:运行源代码。如图 0‑5 ,使其从小到大排列,实现流程如图 1‑2 所示。 1. 将扑克牌划分为“有序”和“无序”两部分,并假设初始状态下最左 1 张扑克牌已经有序。 2. 在无序部分抽出一张扑克牌,插入至有序部分的正确位置;完成后最左 2 张扑克已经有序。 3. 不断循环步骤 2. ,每一轮将一张扑克牌从无序部分插入至有序部分,直至所有扑克牌都有序。 图 1‑2 扑克排序步骤 上述整理扑克牌的方法本质上是“插入0 码力 | 376 页 | 30.69 MB | 1 年前3
Hello 算法 1.2.0 繁体中文 Java 版是我對這個問題給出的答案,即使不是最 佳解,也至少是一種積極的嘗試。本書雖然不足以讓你直接拿到 Offer,但會引導你探索資料結構與演算法 的“知識地圖”,帶你了解不同“地雷”的形狀、大小與分布位置,讓你掌握各種“排雷方法”。有了這些本 領,相信你可以更加自如地刷題與閱讀文獻,逐步構建起完整的知識體系。 我深深認同費曼教授所言:“Knowledge isn’t free. You have 倉庫。如果已經安裝 Git ,可以透過以下命令克隆本倉庫: git clone https://github.com/krahets/hello-algo.git 當然,你也可以在圖 0‑4 所示的位置,點選“Download ZIP”按鈕直接下載程式碼壓縮包,然後在本地解壓 即可。 第 0 章 前言 www.hello‑algo.com 7 圖 0‑4 克隆倉庫與下載程式碼 第三步:執行源程式碼。如圖 初識演算法 www.hello‑algo.com 12 1. 將撲克牌劃分為“有序”和“無序”兩部分,並假設初始狀態下最左 1 張撲克牌已經有序。 2. 在無序部分抽出一張撲克牌,插入至有序部分的正確位置;完成後最左 2 張撲克已經有序。 3. 不斷迴圈步驟 2. ,每一輪將一張撲克牌從無序部分插入至有序部分,直至所有撲克牌都有序。 圖 1‑2 撲克排序步驟 上述整理撲克牌的方法本質上是“插入0 码力 | 379 页 | 18.79 MB | 10 月前3
Hello 算法 1.2.0 简体中文 Java 版书是我对这个问题给出的答案,即使不是最 优解,也至少是一次积极的尝试。本书虽然不足以让你直接拿到 Offer,但会引导你探索数据结构与算法的 “知识地图”,带你了解不同“地雷”的形状、大小和分布位置,让你掌握各种“排雷方法”。有了这些本领, 相信你可以更加自如地刷题和阅读文献,逐步构建起完整的知识体系。 我深深赞同费曼教授所言:“Knowledge isn’t free. You have 仓库。如果已经安装 Git ,可以通过以下命令克隆本仓库: git clone https://github.com/krahets/hello-algo.git 当然,你也可以在图 0‑4 所示的位置,点击“Download ZIP”按钮直接下载代码压缩包,然后在本地解压即 可。 第 0 章 前言 www.hello‑algo.com 7 图 0‑4 克隆仓库与下载代码 第三步:运行源代码。如图 初识算法 www.hello‑algo.com 12 1. 将扑克牌划分为“有序”和“无序”两部分,并假设初始状态下最左 1 张扑克牌已经有序。 2. 在无序部分抽出一张扑克牌,插入至有序部分的正确位置;完成后最左 2 张扑克已经有序。 3. 不断循环步骤 2. ,每一轮将一张扑克牌从无序部分插入至有序部分,直至所有扑克牌都有序。 图 1‑2 扑克排序步骤 上述整理扑克牌的方法本质上是“插入0 码力 | 379 页 | 18.48 MB | 10 月前3
Nacos架构&原理
式,连接数据库执行⼀条 MySQL 命令,通常的方式是在代码里增加 MySQL 类型的健康检查方法、 构建、测试然后最终发布。但是如果允许用户上传⼀个 jar 包放到 Server 部署目录下的某个位置, Server 就会自动扫描并识别到这张新的健康检查方式呢?这样不仅更酷,也让整个扩展的流程与 Server 的代码解耦,变得非常简单。所以对于系统的⼀些功能,如果能够通过精心的设计开放给用 下面,搜救队必须要知 道你在废墟里面那么才能对你进行施救。那么有什么方法可以让救援队知道你在废墟下面?第⼀种, 你在废墟里面大喊 help! help! I am here! ,让搜救队知道你的位置和健康状态。第二种,搜救队 使用了他们的专业检查设备,探测到你正埋在废墟下面。 这两种检查方式其实也可以类比到我们对于服务的探测,我们需要知道⼀个服务是否还健康。那么 第⼀种方式是客户端主动上 那么我们就 认为服务已经不健康。第二种,则是服务端主动向客户端进行探测,检查客户端是否还被能探测到。 Nacos 架构 < 90 再回到前面的场景中,如果是你在废墟中大声呼叫救援队并且提供你的位置和健康信息,那么相比 于搜救队用探测设备挨着废墟探测会使探测队的工作量减轻很多,那么他可以专注于尽快将你救出。 这也好比于注册中心对于服务健康状态的检测,如果所有服务都需要注册中心去主动探测,由于服0 码力 | 326 页 | 12.83 MB | 9 月前3
跟我学Shiro - 张开涛tion:*”或者 “organization:*:*”。可以这么理解,这种方式实现了前缀匹配。 另外如“user:*”可以匹配如“user:delete”、“user:delete”可以匹配如“user:delete:1”、 “user:*:1”可以匹配如“user:view:1”、“user”可以匹配“user:view”或“user:view:1” 等 。 即 *可 以 匹 配 所 有 , 匹 配 “system:user:view”,需要使用“*:*:view”,即后缀匹配必须指定前缀(多个冒号就需要 多个*来匹配)。 7、WildcardPermission 如下两种方式是等价的: 因此没什么必要的话使用字符串更方便。 8、性能问题 通配符匹配方式比字符串相等匹配来说是更复杂的,因此需要花费更长时间,但是一般系 统的权限不会太多,且可以配合缓存 统的权限不会太多,且可以配合缓存来提供其性能,如果这样性能还达不到要求我们可以 实现位操作算法实现性能更好的权限匹配。另外实例级别的权限验证如果数据量太大也不 建议使用,可能造成查询权限及匹配变慢。可以考虑比如在 sql 查询时加上权限字符串之 类的方式在查询时就完成了权限匹配。 role75=user:*:* subject().checkPermissions("user:view:1", "user:auth:2");0 码力 | 219 页 | 4.16 MB | 10 月前3
共 27 条
- 1
- 2
- 3













