跟我学Shiro - 张开涛数过 多)、IncorrectCredentialsException (错误的凭证)、ExpiredCredentialsException(过期的 凭证)等,具体请查看其继承关系;对于页面的错误消息展示,最好使用如“用户名/密码 错误”而不是“用户名错误”/“密码错误”,防止一些恶意用户非法扫描帐号库; 2.6、最后可以调用 subject.logout 退出,其会自动委托给 SecurityManager 该 地址);failureKeyAttribute 指定登录失败时的 request 属性 key(默认 shiroLoginFailure); 这样可以在登录表单得到该错误 key 显示相应的错误消息; 3.2、web.xml 把 shiroConfigLocations 改为 shiro- formfilterlogin.ini 即可。 3.3、登录 Servlet iteye.com/ 71 在登录 Servlet 中通过 shiroLoginFailure 得到 authc 登录失败时的异常类型名,然后根据此 异常名来决定显示什么错误消息。 4、测试 输入 http://localhost:8080/chapter7/role,会跳转到“/formfilterlogin”登录表单,提交表单如 果 authc 拦截器登录成功0 码力 | 219 页 | 4.16 MB | 10 月前3
Nacos架构&原理
协议的优点并加以优化而出 来的,对于原生的 Gossip,由于随机选取发送消息的节点,也就不可避免的存在消息重复发送给同 ⼀节点的情况,增加了网络的传输的压力,也给消息节点带来额外的处理负载,而 Distro 算法引入 了权威 Server 的概念,每个节点负责⼀部分数据以及将自己的数据同步给其他节点,有效的降低 了消息冗余的问题。 早期的 Nacos ⼀致性协议 我们先来看看早起的 Naocs 接 断开时,需要进行切换 Server 进行重连。 ○ 客户端基于当前可用的长链接进行配置的查询,发布,删除,监听,取消监听等配置领域的 R PC 语意接口通信。 ○ 感知配置变更消息,需要将配置变更消息通知推送当前监听的客户端;网络不稳定时,客户端 接收失败,需要支持重推,并告警。 ○ 感知客户端连接断开事件,将连接注销,并且清空连接对应的上下文,比如监听信息上下文清 理。 Server 连接生命周期实时感知能力,包括连接建立,连接断开事件。 客户端调用服务端支持同步阻塞,异步 Future,异步 CallBack 三种模式。 底层连接自动切换能力。 响应服务端连接重置消息进行连接切换。 选址/服务发现。 服务端 连接生命周期实时感知能力,包括连接建立,连接断开事件。 服务端往客户端主动进行数据推送,需要客户端进行 Ack 返回以支持可靠推送,并且需要进行失0 码力 | 326 页 | 12.83 MB | 9 月前3
《Java 应用与开发》课程讲义 - 王晓东2010 Sun 公司被甲骨文公司收购。 Java 语言的版本迭代历程如图1.1所示。 1.1.2 Java 技术的特点 Java 具备以下技术特点: 面向对象 Java 是一种以对象为中心,以消息为驱动的面向对象的编程语言。 平台无关性 分为源代码级(需重新编译源代码,如 C/C++)和目标代码级 (Java) 平台 无关。 分布式 可支持分布式技术及平台开发。 可靠性 不支持直接操 访问者模式 结构型模式 涉及如何组合类和对象以形成更大的结构,和类有关的结构型模式涉及如 何合理使用继承机制,和对象有关的结构型模式涉及如何合理的使用对象组合机 制。 适配器模式、组合模式、代理模式、享元模式、外观模式、桥接模式和装饰模式 Singleton 设计模式也称“单子模式”或“单例模式”。 采用调试方式讲解示例代码 . . . . . . . . . . . . . . . 以键值对的形式存在,由属性名称、属性值两部分组成。 • 均为字符串形式。 系统属性的用途主要包括: 系统属性在 URL 网络编程、数据库编程和 Java Mail 邮件收发等编程中经常使用, 一般被用来设置代理服务器、指定数据库的驱动程序类等。 除了使用代码方法外,也可使用命令在运行程序时添加新的系统属性: 1 >java -Dmmmm=vvvv SystemPropertiesSample 9.30 码力 | 330 页 | 6.54 MB | 1 年前3
Java EE 企业应用系统开发 - HTTP 响应处理编程响应体(Response Body) 大纲 HTTP 响应的内容 HTTP 响应对象 响应对象功能和方法 HTTP 响应状态行 表明响应的状态信息,如成功、失败、错误。 状态行组成:版本 / 状态代码 / 状态消息。 O 状态行例子 HTTP/1.1 200 ok 1. 版本:使用的 HTTP 协议版本,如 HTTP/1.1; 2. 状态代码:3 位数字; ▶ 1xx: 收到请求,没有处理完。 ▶ 2xx: 服务器会自动设置状态码为 404,状态消息为 not found。 O public void setStatus(int code) 直接发送指定的响应状态码,没有设置状态消息,只有默认的状 态消息,如果无对应状态消息则显示为空。 O public void setStatus(int code, String message) 设置指定的状态码,同时设定自定义的状态消息,可以修改默认 的状态消息。该方法在 Servlet sendError(580); O public void sendError(int sc, String msg) throws IOException 向客户端发送指定的错误信息码和自定义状态消息。 1 response.setCharacterEncoding("GBK"); 2 response.sendError(580, "自定义错误"); 大纲 HTTP 响应的内容 HTTP0 码力 | 26 页 | 575.28 KB | 1 年前3
Apache Shiro参考手册中文版就在我们的简单应用程序中启用了!很容易是吧? 轻松地运行 mvn compile exec:java,并看到这一切仍然运行成功(由于 Shiro 的默认调试日志或更低版本,你将不会 看到任何的 Shiro 日志消息——如果在启动和运行没有报错,那么你知道一切仍然正常)。 这里是上面增加的代码所做的: 1. 我们使用 Shiro 的 IniSecurityManager 实现来提取我们的 shiro Shiro 可能不提供的。请参见 AuthenticationException JavaDoc 获取更多。 Handy Hint 最安全的做法是给普通的登录失败消息给用户,因为你当然不想帮助试图闯入你系统的攻击者。 好了,到现在为止,我们已经有了一个登录用户。我们还能做些什么? 比方说,他们是是谁: 我们也可以测试他们是否有特定的角色: AuthenticationExceptions 来代表具体的异常情况。 Login Failure Tip 虽然你的代码可以以特定的异常作出反应,并执行必要的逻 辑,最安全的做法是只显示通用的失败消息给终端用户,例如, “错误的用户名或密码。”。这样将确保具体的信息提供给黑 客可能试图攻击的媒介。 Remembered vs. Authenticated(记住我对比认证) 如上面的例子所示,Shiro0 码力 | 92 页 | 1.16 MB | 1 年前3
Java 应用与开发 - 面向对象编程进阶式 和访问者模式 结构型模式 涉及如何组合类和对象以形成更大的结构,和类有关 的结构型模式涉及如何合理使用继承机制,和对象有关的结构型 模式涉及如何合理的使用对象组合机制。 适配器模式、组合模式、代理模式、享元模式、外观模式、桥接 模式和装饰模式 大纲 多态性 方法重载 关键字 static 关键字 final 经典设计模式分类 创建型模式 涉及对象的实例化,特点是不让用户代码依赖于对象 的创建或排列方式,避免用户直接使用 式 和访问者模式 结构型模式 涉及如何组合类和对象以形成更大的结构,和类有关 的结构型模式涉及如何合理使用继承机制,和对象有关的结构型 模式涉及如何合理的使用对象组合机制。 适配器模式、组合模式、代理模式、享元模式、外观模式、桥接 模式和装饰模式 大纲 多态性 方法重载 关键字 static 关键字 final 经典设计模式分类 创建型模式 涉及对象的实例化,特点是不让用户代码依赖于对象 的创建或排列方式,避免用户直接使用 式 和访问者模式 结构型模式 涉及如何组合类和对象以形成更大的结构,和类有关 的结构型模式涉及如何合理使用继承机制,和对象有关的结构型 模式涉及如何合理的使用对象组合机制。 适配器模式、组合模式、代理模式、享元模式、外观模式、桥接 模式和装饰模式 大纲 多态性 方法重载 关键字 static 关键字 final Singleton 设计模式 采用调试方式讲解示例代码 课程配套代码 ±0 码力 | 49 页 | 659.74 KB | 1 年前3
Apache Shiro 1.2.x Reference Manual 中文翻译isAuthenticated())。这通常发生在一个Subject 登录后或当一个 Subject 的身份 ID 通过Remember 服务被发现后。 这个默认的方法有几个好处: 任何服务于请求,调用或消息的应用程序可以用请求/调用/消息的有效载荷关联会话ID, 且这是Shiro 用入站 请求关联用户所有所必须的。例如,如果使用Subject.Builder,这是 需要获取相关的Subject 所需的一切: Serializable buildSubject(); Apache Shiro 1.2.x Reference Manual 中文翻译 86 8. Session Management 这给大多数Web 应用程序及任何编写远程处理或消息框架的人带来了令人难以置信的方便 (这事实上是Shiro 的Web 支持在自己的框架代码内关联Subject 和ServletRequest)。 任何"RememberMe"身份基于一个能够在第一次访问就能持久化到会话的初始请求。这 但这一要求带来一个便利的代价—— Subject 状态不能跨请求保留。这意味着有这一要求的应 用程序必须确保 Subject 状态可以在每一个请求中以其他的方式代表。 这几乎总是通过验证每个由应用程序处理的请求/调用/消息来完成的。例如,大多数无状态 Web 应用程序通常支持这一点通过执行 HTTP 基本验证,允许浏览器验证每一个代表最终用 户的请求 Disabling Subject State Session0 码力 | 196 页 | 2.34 MB | 1 年前3
Java 应用与开发 - 异常处理发生异常时,系统将自动创建异常类对象,并将作为实参传递给 匹配的 catch 语句块的形参,这样就可以在语句块中操纵该异常 对象。 O 异常类的父类 Throwable 中定义的方法 getMessage() 返回描述当前异常的详细消息字符串。 printStackTrace() 用来跟踪异常事件发生时运行栈的内容,并 将相关信息输出到标准错误输出设备。本方法比较 常用,在没有找到适合的异常处理代码时,系统也 会自动调用该方法输出错误信息。 发生异常时,系统将自动创建异常类对象,并将作为实参传递给 匹配的 catch 语句块的形参,这样就可以在语句块中操纵该异常 对象。 O 异常类的父类 Throwable 中定义的方法 getMessage() 返回描述当前异常的详细消息字符串。 printStackTrace() 用来跟踪异常事件发生时运行栈的内容,并 将相关信息输出到标准错误输出设备。本方法比较 常用,在没有找到适合的异常处理代码时,系统也 会自动调用该方法输出错误信息。0 码力 | 33 页 | 626.40 KB | 1 年前3
Hello 算法 1.0.0b4 Java版语言设计之初,人们认 为 16 位足以表示所有可能的字符。然而,这是一个不正确的判断。后来 Unicode 规范扩展到了超过 16 位,所以 Java 中的字符现在可能由一对 16 位的值(称为“代理对”)表示。 ‧ JavaScript 和 TypeScript 的字符串使用 UTF‑16 编码的原因与 Java 类似。当 JavaScript 语言在 1995 年被 Netscape 公司首次引入时,Unicode 操作系统,都广泛地使用 UTF‑16 编码。 由于以上编程语言对字符数量的低估,它们不得不采取“代理对”的方式来表示超过 16 位长度的 Unicode 字符。这是一个不得已为之的无奈之举。一方面,包含代理对的字符串中,一个字符可能占用 2 字节或 4 字节,因此丧失了等长编码的优势。另一方面,处理代理对需要增加额外代码,这增加了编程的复杂性和 Debug 难度。 出于以上原因,部分编程语言提出了不同的编码方案:0 码力 | 342 页 | 27.39 MB | 1 年前3
Hello 算法 1.1.0 Java版语言设计之初,人们认 为 16 位足以表示所有可能的字符。然而,这是一个不正确的判断。后来 Unicode 规范扩展到了超过 16 位,所以 Java 中的字符现在可能由一对 16 位的值(称为“代理对”)表示。 ‧ JavaScript 和 TypeScript 的字符串使用 UTF‑16 编码的原因与 Java 类似。当 1995 年 Netscape 公司 首次推出 JavaScript 操作系统)都广泛使用 UTF‑16 编码。 由于以上编程语言对字符数量的低估,它们不得不采取“代理对”的方式来表示超过 16 位长度的 Unicode 字符。这是一个不得已为之的无奈之举。一方面,包含代理对的字符串中,一个字符可能占用 2 字节或 4 字 节,从而丧失了等长编码的优势。另一方面,处理代理对需要额外增加代码,这提高了编程的复杂性和调试 难度。 出于以上原因,部分编程语言提出了一些不同的编码方案。0 码力 | 378 页 | 18.47 MB | 1 年前3
共 19 条
- 1
- 2













