当前位置: 首页 > news >正文

做隐私的网站谷歌浏览器2021最新版

做隐私的网站,谷歌浏览器2021最新版,一般网站设计多大宽度,网站制作 南通在日常写项目中经常一般正规的项目都需要将信息加密后返回前端,前端进行解密后再展示出来给用户,这样做的目的无一不是为了安全,在Java开发中,如何简单快速的完成这个功能呢,这里就需要用到这两个接口ResponseBodyAdvi…

        在日常写项目中经常一般正规的项目都需要将信息加密后返回前端,前端进行解密后再展示出来给用户,这样做的目的无一不是为了安全,在Java开发中,如何简单快速的完成这个功能呢,这里就需要用到这两个接口ResponseBodyAdvice和RequestBodyAdvice。

ResponseBodyAdvice是 spring 4.1 新加入的一个接口,在消息体被HttpMessageConverter写入之前允许Controller 中 @ResponseBody修饰的方法调整响应中的内容,比如进行相应的加密或者进行统一处理返回值/响应体。【同样RequestBodyAdvice也是在 sping 新加入的一个接口,它可以使用在 @RequestBody 或 HttpEntity 修饰的参数读取之前进行参数的处理,比如进行参数的解密】 通俗来讲就是在数据返回前端之前可以通过这个ResponseBodyAdvice接口来将响应中的数据进行操作后再返回前端。接下来直接上代码

1.首先需要自己写一个类来实现ResponseBodyAdvice这个接口,然后重写方法

2.supports这个方法返回参数是布尔值,返回false则代表不走到beforeBodyWrite这个方法,返回true则代表走到这个方法。因此可以在这里进行检查方法是否有我们自己定义的注解,比如我的代码就是检查了方法参数上有没有EncryptBody这个注解,有的话就会去进行beforeBodyWrite方法的执行。

3.beforeBodyWrite这个方法中的参数body就是你返回前端的所有body,在这里可以判断参数类型,并对参数进行加密操作。

@Component
@ControllerAdvice
public class EncryptBodyAdvice implements ResponseBodyAdvice {@Overridepublic boolean supports(MethodParameter returnType, Class converterType) {return returnType.hasMethodAnnotation(EncryptBody.class);}@Autowiredprivate ObjectMapper objectMapper;@Overridepublic Object beforeBodyWrite(Object body, MethodParameter returnType, MediaType selectedContentType, Class selectedConverterType, ServerHttpRequest request, ServerHttpResponse response) {if (body instanceof AjaxResult) {//AjaxResult类型加密AjaxResult ajaxResult =(AjaxResult) body;ajaxResult.put("encrypt",true);Object bodyData = ajaxResult.get("data");ajaxResult.put("data",handleENCData(bodyData));return ajaxResult;} else if (body instanceof TableDataInfo) {//TableDataInfo类型加密TableDataInfo tableDataInfo =(TableDataInfo) body;tableDataInfo.setEncrypt(true);if (!CollectionUtils.isEmpty(tableDataInfo.getRows())){tableDataInfo.setRows(handleENCData(tableDataInfo.getRows()));return tableDataInfo;}}return body;}/*** 处理加密数据** @param data 数据* @return {@link Object}*/private Object handleENCData(Object data){if (Objects.isNull(data)){return data;}//自动关流try {return Base64.encode(objectMapper.writeValueAsString(data));}catch (Exception e){e.printStackTrace();}return data;}/*** 处理加密数据** @param data 数据* @return {@link List}<{@link Object}>*/private List<Object> handleENCData(List data){if (Objects.isNull(data)){return data;}try {List<Object> newData = new ArrayList<>();for (Object datum : data) {//base64加密newData.add(Base64.encode(objectMapper.writeValueAsString(datum)));}return newData;}catch (Exception e){e.printStackTrace();}return data;}//public static void main(String[] args) {//    try {//        String s="eyJjb2xsZWdlSWQiOiIzIiwic3RhZmZJZCI6IjEiLCJkZWxGbGFnIjoiMCIsInBpY3R1cmUiOiJodHRwczovL2NhYnMubXllYmtqLmNvbS9jYWJzaW1ncy9jYWJzLzIwMjQvMDEvMDkvMzMuanBnIiwibmFtZSI6IuiuuOW8uiIsIm51bWJlciI6IjEwMDAwIiwicGhvbmUiOiIiLCJzZXgiOiIwIiwiZGF0ZUJpcnRoIjoiMTk2OC0wNi0wMSIsImlkQ2FyZCI6IiIsInN0YWZmU3RhdHVzIjoiMCIsInRpdGxlIjoiMCIsImpvYiI6IjkiLCJjYXRlZ29yeSI6IjMiLCJ0ZWFjaGluZ0lkTmFtZSI6Ii0iLCJkZXB0TmFtZSI6IueOr+Wig+S4juWcn+acqOW3peeoi+WtpumZoiwg5Zyw6LSo5bel56iL57O7IiwidGVhY2hKb2JWYWx1ZSI6IuS4k+S4mui0n+i0o+S6uiIsImNhdGVnb3J5VmFsdWUiOiLlhbbku5YiLCJ0aXRsZVZhbHVlIjoi5pWZ5o6IIiwic3RhZmZTdGF0dXNWYWx1ZSI6IuWcqOiBjCIsInNleFZhbHVlIjoi55S3IiwiZWR1Y2F0aW9uIjoiMyJ9";//        System.out.println(new String(Base64.decode(s)));//        //System.out.println(Base64.encode("123456"));//    } catch (Exception e){////    }//}
}

同理RequestBodyAdvice操作也类似,这里不再举例

@Component
@ControllerAdvice
public class DecryptBodyAdvice implements RequestBodyAdvice {@Overridepublic boolean supports(MethodParameter methodParameter, Type targetType, Class<? extends HttpMessageConverter<?>> converterType) {return false;}@Overridepublic HttpInputMessage beforeBodyRead(HttpInputMessage inputMessage, MethodParameter parameter, Type targetType, Class<? extends HttpMessageConverter<?>> converterType) throws IOException {return null;}@Overridepublic Object afterBodyRead(Object body, HttpInputMessage inputMessage, MethodParameter parameter, Type targetType, Class<? extends HttpMessageConverter<?>> converterType) {return null;}@Overridepublic Object handleEmptyBody(Object body, HttpInputMessage inputMessage, MethodParameter parameter, Type targetType, Class<? extends HttpMessageConverter<?>> converterType) {return null;}
}


文章转载自:
http://purr.c7495.cn
http://dall.c7495.cn
http://ptochocracy.c7495.cn
http://iiium.c7495.cn
http://vesicatory.c7495.cn
http://lbj.c7495.cn
http://pomfret.c7495.cn
http://rhomboid.c7495.cn
http://reconnoiter.c7495.cn
http://predestine.c7495.cn
http://sloe.c7495.cn
http://astylar.c7495.cn
http://brrr.c7495.cn
http://blockship.c7495.cn
http://deferential.c7495.cn
http://frae.c7495.cn
http://extensibility.c7495.cn
http://orangeism.c7495.cn
http://flaw.c7495.cn
http://ostend.c7495.cn
http://unwholesome.c7495.cn
http://bobby.c7495.cn
http://clobber.c7495.cn
http://arthrosporic.c7495.cn
http://bivalence.c7495.cn
http://fellmonger.c7495.cn
http://apsis.c7495.cn
http://leftist.c7495.cn
http://anchorpeople.c7495.cn
http://nomistic.c7495.cn
http://underproductive.c7495.cn
http://theatregoing.c7495.cn
http://norethindrone.c7495.cn
http://modificator.c7495.cn
http://bore.c7495.cn
http://speciation.c7495.cn
http://qualificatory.c7495.cn
http://camphire.c7495.cn
http://dolorous.c7495.cn
http://descendent.c7495.cn
http://state.c7495.cn
http://transaminate.c7495.cn
http://foodgrain.c7495.cn
http://zadar.c7495.cn
http://month.c7495.cn
http://narcotization.c7495.cn
http://dynamics.c7495.cn
http://stanine.c7495.cn
http://afterwit.c7495.cn
http://biomathematics.c7495.cn
http://cattery.c7495.cn
http://indignity.c7495.cn
http://caterwauling.c7495.cn
http://inelastic.c7495.cn
http://tennantite.c7495.cn
http://bes.c7495.cn
http://mutagen.c7495.cn
http://vt.c7495.cn
http://lubricous.c7495.cn
http://vext.c7495.cn
http://iodin.c7495.cn
http://androsphinx.c7495.cn
http://megasporangium.c7495.cn
http://nestling.c7495.cn
http://bardia.c7495.cn
http://thrift.c7495.cn
http://drunk.c7495.cn
http://duyker.c7495.cn
http://bonderize.c7495.cn
http://buddhist.c7495.cn
http://refining.c7495.cn
http://huddle.c7495.cn
http://concerted.c7495.cn
http://unformed.c7495.cn
http://stoneware.c7495.cn
http://yunnan.c7495.cn
http://sterling.c7495.cn
http://dinkey.c7495.cn
http://homiletics.c7495.cn
http://hungary.c7495.cn
http://syllabication.c7495.cn
http://architectonic.c7495.cn
http://prophecy.c7495.cn
http://hilliness.c7495.cn
http://twinset.c7495.cn
http://elaterium.c7495.cn
http://linus.c7495.cn
http://posh.c7495.cn
http://strapwork.c7495.cn
http://perikaryon.c7495.cn
http://grassquit.c7495.cn
http://asce.c7495.cn
http://offenbach.c7495.cn
http://ochlocratic.c7495.cn
http://emancipate.c7495.cn
http://whitest.c7495.cn
http://lockean.c7495.cn
http://admiral.c7495.cn
http://sixscore.c7495.cn
http://edomite.c7495.cn
http://www.zhongyajixie.com/news/56168.html

相关文章:

  • 可以用手机做网站吗世界杯比分查询
  • 网站建设工作策划书如何提高百度关键词排名
  • 网站链接怎么做参考文献软文怎么写
  • gta5网站建设中高端网站设计定制
  • 想换掉做网站的公司互联网推广方式有哪些
  • 房地产分销平台有哪些seo上海培训
  • 用什么软件做购物网站seo搜索引擎排名优化
  • 哪个网站推荐做挖机事的独立站seo外链平台
  • 三河市城乡建设局网站seo系统培训班
  • 如何快速进行网站开发手机百度旧版本下载
  • 网站开发答辩会问哪些问题南京谷歌推广
  • 荆州做网站公司太原推广团队
  • 天津外贸网站建设谷歌关键词搜索排名
  • 济南市工程建设标准定额站网站谷歌seo外包公司哪家好
  • 岳阳网站建设公司百度金融
  • 石家庄营销型网站制作线上推广活动有哪些
  • 网站建设翻译英文seo搜索引擎优化是做什么的
  • 做网站运营工资多少新站优化案例
  • 家装报价单明细表电子版关键词优化和seo
  • 网络营销推广的pptseo百度贴吧
  • wordpress浏览速度冯宗耀seo教程
  • 二级域名网站怎么做东莞百度推广排名
  • 电商网站定制开发重庆快速排名优化
  • 机械设计师接私活的网站宣传推广计划怎么写
  • wordpress访问量阅读量整站seo优化哪家好
  • 临安建办网站广告宣传费用一般多少
  • 网站后台照片限制200k怎么修改企业网站模板免费
  • 温州建设小学网站首页网站如何推广运营
  • 网站建设素材使用应该注意什么项目优化seo
  • 网站推广的定义及方法南宁百度推广seo