自定义注解,结合糊涂对 spring 接口返回数据进行脱免啊,我们在工作的时候可能经常性的需要返回一些用户信息,而用户信息里面可能就包括了一些敏感信息,比如说手机号,比如说身份证号, 我们有的时候对于一个接口而言,我们需要对这些敏感信息去进行脱敏的操作,那么在开发问中间,我们到底该怎么样啊,更方便的去进行脱敏呢?啊?我这边就自定义了一个注解啊,这个注解我自定义的,那同时最核心的是我结合了 糊涂这个工具啊,我们就完成了透明的这个动作,因为在糊涂啊里面他并没有提供试图啊,我去找了一下,他应该是没有提供一些注解来用的,但是他提供的一些工具类工具方法可以让我们来用。 关于这个问题的详细文字版,我已经整理了一份八十万字的专号名师大全笔记,放在视频的最后面,坚持看完一定对你有帮助。好,我们来看,比如说我自定义的这个注解啊,首先这些注解大家都可以去加上,那么里面的这个属性,包括这个 tap 就不是我写的了,这是糊涂啊里面的。对,那么呃,这个注解怎么用 用呢?其实很简单,你就可以在你想要脱敏的位置去加上这个注解啊,当然你对应的这个属性啊,你的信息的不是是什么?是手机号呢?还是身份证号呢?哎,你得指定啊,比如说你就可以去就指定我们刚刚看到的那个类型啊,我们记我记得是有一个 什么什么手机号的,他不是这一个啊,有一个对这个手机号,这是我想要的,呃,类型对不对?包括下面的你是身份证号,所以说你就可以利用这个自定义注解去指定一下对应的类型就可以了啊,这样子,呃,最终其实就可以完成脱密啊,只不过我们先来讲一下他底层是怎么做的啊?首先来看还是刚才这个自定义注解,那我们指定完类型,然后上面有一个 相当于节省序列化器,这个很重要,因为我们真正这个脱敏发生的时间点呢,其实就是我们真正要去把这个对象啊写到网络里面去啊,或者写到车牌里面去,去进行序列化的时候,就会真正的去进行这个脱敏的操作,就是我们这里提供的一个序列化器, 而这个序列化器他到时候就能够拿到你某个属性上面你对应的这个类型,然后真正在序列化的时候呢,他就会根据你的这个类型属性上面的类型和当前需要进行脱敏操作的值啊,就传给这个方法,我说了这个 utel 是糊兔提供给我们的啊,我就直接用了,我没有去写,所以这样子的话,我就能够把 是由原本属性的值去进行一个脱敏的操作,按照我们这边注解里面的类型的这个格式去进行一个脱敏的操作,最终又得到了脱敏之后的结果就会返回出去, 所以说这是呃,所以其实核心是这个训练化器还比较重要,对,特别是这一行代码。好,那么我们再看啊。呃,所以这个原理我大概讲一下,我们就直接来看一下对应的效果, 我们先不加这两个注解,大家可以看一下他原本的格式是什么样子的啊?我们访问这个 ctrl 接口,然后呢里面我就去构造了一个 user 对象,对,手机号,身份证号啊,然后我们来运行一下啊,你看啊,这是原有的格式,是没有进行 脱敏的,那我现在要进行脱敏,其实很简单,我加上这两个注解其实就可以了。好了,我们再重新启动一下啊,所以大家想要这个代码的也可以给我留言,我到时候可以把这个代码就发给大家。好,来看,你看这就是进行了脱敏,对,包括,呃,他这里面提供的类型都很多啊,手机号呀,身份证号呀,地址啊, 呃,包括还有很多的机油箱呀,各种密码呀,也都可以进行脱敏。反正这其实就是糊涂啊,自制的类型,好吧,我的我所做的事情其实就是自定义的一个注解,以及自定义的一个节省训练化器而已啊,就没有太多的事情啊,所以就这一个,好吧,那今天这个技术点我就分享到这个地方啊,也希望能够得到大家的一箭三连。
粉丝4.2万获赞27.1万

这是一个简单的 spring boot 服务,在浏览器访问服务的接口成功返回结果,如果在 console 里面使用 fat 方法来进行请求,把 local hose 换成幺二七点零点零点幺,会发生什么呢?是的, 这里出现了跨域报错。我们知道跨域是浏览器的一种安全策略,在不同域名、不同协议、 不同端口的情况下就会发生跨越。 logo house 和幺二七点零点零点幺在概念上是同一主机,但从浏览器的角度看,他们被认为是不同的域。 下面给大家演示几种常用的跨域方案解决方案。第一种是项目中最常使用的使用 nginx 反向代理。在 nginx 上处理跨域问题 主要就是这几行配置, allow origin 用于设置允许跨域请求原地址。 allow headers 用于设置跨域允许携带的 header 信息。 allow methods 用于设置跨域允许的请求方法, allow credentials 设置是否允许跨域使用 cookies。 另外一个很重要的事,处理预检请求。当发生跨越条件时候,浏览器会先询问服务器,请求方式是 option, 只有得到肯定答复, 浏览器才会发出正式的 http 请求。所以当请求为 option 请求时候,需求返回一个状态码。二零四,保存设置后重启 injinx 测试一下,我们把请求端口改成 injinx 监听的八八八八,让服务 使用 and drinks 的反向代理 local host 请求没有问题, fetch 的一百二十七余名请求也正常返回。结果,除了 end drinks 方案, 也可以使用 spring 框架本身自带的 at cross origin 注解来处理跨越。这里注解的参数, foreign drinks this is page of origin a law hatters a law methods 和 law credentials 不一样,是使用 adcross origin 注解时, spring 框架会自动处理浏览器发送的预检请求, 我们不需要像 in drinks 那样设置响应预检请求。添加注解后重启服务测试一下同样可以解决跨越问题。除了使用 adcross origin 注解解决单一接口的问题,我们也可以使用全 全局 mvc 配置的方式,通过实现 y bmvc configure 接口注册自定义的拦截器配置需要拦截的接口,还有和之前一样的允许配置。 重启测试一下成功解决跨越问题。上面就是给大家演示的三种跨越问题解决方案,希望对你有所帮助。


看一个需求公司通过不同的推广渠道来获取客户,不同的渠道有不同的处理方法,那该怎么实现呢?咱们一般的实现方式是判断渠道编码, 根据不同的渠道编码调用不同的方法,这种写法虽然结构比较清晰,但是如果渠道比较多的话,代码比较勇于,那有没有更好的办法呢?看一下代码视力,这里我定义了一个渠道处理的 sos 接口,只有一个憨豆方法,这边有两个实现类,分别为 a 渠道和 b 渠道。 这边呢,我添加了 siris 注解,并且修改了 siris 的名称为渠道名称。最后再看一下, ctrl 了,这里通过 map 注入了渠道接口,斯博润会在启动时自动查找,实现了该接口的并并放到 map 当中, k 呢就是并的名称,这里也就是咱们的渠道名。 y 六呢,是实线接口的所有币,这里呢,我调用了 a 渠道的方法,并且在这里打了个断点,咱们看一眼这个脉泼,咱们通过 pose 的闷调用一下,这里呢,可以看到这个脉搏集合,它的 k 就是咱们的这个渠道名称,然后对应的 y 六就是这个实线类, 然后咱们看一眼这控制台,打印了 a 渠道的电用处理方法。那么小伙伴还有什么更好的办法吗?评论区讨论一下。