SpringCloud使用Spring Cloud Bus刷新配置
在《Spring Cloud Config统一配置管理》中,我们实现了通过往Config-Client发送/refreshPOST请求来刷新配置。不过这种方式只对单个Config-Client有效(往哪个Config-Client发送刷新请求,哪个配置就得到刷新,剩下的Config-Client获取的仍是旧的配置信息)。当Config-Client实例集群数量较多时,如果都要手动一个一个去刷新配置,不仅麻烦还容易遗漏。值得庆幸的是,我们可以借助Spring Cloud Bus来自动刷新集群的配置信息。 Spring Cloud Bus使用轻量级的消息代理(如RabbitMQ,Kafka)连接分布式系统的节点,可以以广播的形式将一些变更信息(如配置的变更)扩散到分布式链路中去。所以我们可以在Config-Server和Config-Client集群中加入Spring Cloud Bus,然后往某个Config-Server实例发送/refresh请求来刷新集群中所有实例的配置信息。 在引入Spring Cloud Bus之前,我们先来简单验证下开头的结论。我们用上一节的源码为基础,来搭建
javaJAVA中的Map遍历
这篇文章主要介绍了JAVA8独有的map遍历方式(非常好用),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧。 通过Map.keySet遍历key和value 通过Map.entrySet遍历key和value
SecuritySpring Security权限控制
Spring Security权限控制可以配合授权注解使用,接着上一节,要开启这些注解,只需要在Spring Security配置文件中添加如下注解: 在UserDetailService中,我们给当前登录用户授予了”admin”的权限,我们将这块代码改造一下:当登录用户为wno704的时候,其拥有”admin”权限,其他用户则只有”test”权限: 添加一个方法,并且使用权限注解标明只有拥有“admin”权限的人才能访问:
SecuritySpring Security退出登录
Spring Security默认的退出登录URL为/logout,退出登录后,Spring Security会做如下处理: 1.是当前的Sesion失效; 2.清除与当前用户关联的RememberMe记录; 3.清空当前的SecurityContext; 4.重定向到登录页。 Spring Security允许我们通过配置来更改上面这些默认行为。
SecuritySpring Security Session管理
用户登录成功后,信息保存在服务器Session中,这节学习下如何管理这些Session。这节将在《Spring Security短信验证码登录》的基础上继续扩展。 Session超时时间也就是用户登录的有效时间。要设置Session超时时间很简单,只需要在配置文件中添加: SpringBoot2.0以后的版本,server.servlet.session.timeout取值依据;之前在server.session.timeout路径配置;timeout取值字符串方式,默认为正,负以-开头,紧接着P,以下字母不区分大小写 D :天 T:天和小时之间的分隔符 H :小时 M:分钟 S:秒 每个单位都必须是数字,且时分秒顺序不能乱。比如P2dt3m5s P3d pt3h
SecuritySpring Security短信验证码登录
在《Spring Security添加图形验证码》一节中,我们已经实现了基于Spring Boot + Spring Security的账号密码登录,并集成了图形验证码功能。时下另一种非常常见的网站登录方式为手机短信验证码登录,但Spring Security默认只提供了账号密码的登录认证逻辑,所以要实现手机短信验证码登录认证功能,我们需要模仿Spring Security账号密码登录逻辑代码来实现一套自己的认证逻辑。 我们在《Spring Security自定义用户认证》这一节Spring Security添加图形验证码的基础上来集成短信验证码登录的功能。 和图形验证码类似,我们先定义一个短信验证码对象SmsCode:
SecuritySpring Security添加记住我功能
在网站的登录页面中,记住我选项是一个很常见的功能,勾选记住我后在一段时间内,用户无需进行登录操作就可以访问系统资源。在Spring Security中添加记住我功能很简单,大致过程是:当用户勾选了记住我选项并登录成功后,Spring Security会生成一个token标识,然后将该token标识持久化到数据库,并且生成一个与该token相对应的cookie返回给浏览器。当用户过段时间再次访问系统时,如果该cookie没有过期,Spring Security便会根据cookie包含的信息从数据库中获取相应的token信息,然后帮用户自动完成登录操作。 Spring Security的记住我功能的实现需要使用数据库来持久化token。我们在上一节Spring Security添加图形验证码的基础上来添加记住我的功能。 在application.yml中添加数据源配置:
SecuritySpring Security添加图形验证码
添加验证码大致可以分为三个步骤:根据随机数生成验证码图片;将验证码图片显示到登录页面;认证流程中加入验证码校验。Spring Security的认证校验是由UsernamePasswordAuthenticationFilter过滤器完成的,所以我们的验证码校验逻辑应该在这个过滤器之前。下面一起学习下如何在上一节Spring Security自定义用户认证的基础上加入验证码校验功能。 增加kaptcha配置类 KaptchaConfig.java kaptcha可配置项:
SpringBootSpring Boot中整合Ureport2
UReport2是一款基于架构在Spring之上纯Java的高性能报表引擎,通过迭代单元格可以实现任意复杂的中国式报表。 在UReport2中,提供了全新的基于网页的报表设计器,可以在Chrome、Firefox、Edge等各种主流浏览器运行(IE浏览器除外)。使用UReport2,打开浏览器即可完成各种复杂报表的设计制作。 UReport2是第一款基于Apache-2.0开源协议的中式报表引擎,Github地址:https://github.com/youseries/ureport 这里过多介绍Spring Boot中整合Ureport2,使用具体不多做介绍,具体可以参考《UReport2 教程》 注意: 在这个 servlet 配置当中,值为“/ureport/*”的 url-pattern 是一定不能变的,否则系统将无法运行。
设计模式J2EE型模式-传输对象模式(八)
传输对象模式(Transfer Object Pattern)用于从客户端向服务器一次性传递带有多个属性的数据。传输对象也被称为数值对象。传输对象是一个具有 getter/setter 方法的简单的 POJO 类,它是可序列化的,所以它可以通过网络传输。它没有任何的行为。服务器端的业务类通常从数据库读取数据,然后填充 POJO,并把它发送到客户端或按值传递它。对于客户端,传输对象是只读的。客户端可以创建自己的传输对象,并把它传递给服务器,以便一次性更新数据库中的数值。以下是这种设计模式的实体。 简单的 POJO,只有设置/获取属性的方法。 为传输对象填充数据的业务服务。