摘要:時隔多天,發布了第二個版本,還是要感謝一些正在使用的朋友們,提出了一些問題。配置文件可以在中使用可以在,中使用相同問題當存在兩個相同的時,比如請求的和的請求。如果是使用的方式,框架會自動處理,會為每一個加上前綴來區分不同的請求方式。
時隔10多天,monkey-api-encrypt發布了第二個版本,還是要感謝一些正在使用的朋友們,提出了一些問題。
GitHub主頁:https://github.com/yinjihuan/monkey-api-encrypt
本次更新內容如下:
支持Spring Boot配置
支持注解開啟加解密(Spring Boot中)
增加Spring MVC示例
手動注冊過濾器使用@Configuration public class FilterConfig { @Bean public FilterRegistrationBeanSpring Boot Starter方式使用filterRegistration() { EncryptionConfig config = new EncryptionConfig(); config.setKey("abcdef0123456789"); config.setRequestDecyptUriList(Arrays.asList("/save", "/decryptEntityXml")); config.setResponseEncryptUriList(Arrays.asList("/encryptStr", "/encryptEntity", "/save", "/encryptEntityXml", "/decryptEntityXml")); FilterRegistrationBean registration = new FilterRegistrationBean (); registration.setFilter(new EncryptionFilter(config)); registration.addUrlPatterns("/*"); registration.setName("EncryptionFilter"); registration.setOrder(1); return registration; } }
啟動類加@EnableEncrypt注解,開啟加解密自動配置,省略了手動注冊Filter的步驟
@EnableEncrypt @SpringBootApplication public class App { public static void main(String[] args) { SpringApplication.run(App.class, args); } }
配置文件中配置加密的信息,也就是EncryptionConfig
spring.encrypt.key=abcdef0123456789 spring.encrypt.requestDecyptUriList[0]=/save spring.encrypt.requestDecyptUriList[1]=/decryptEntityXml spring.encrypt.responseEncryptUriList[0]=/encryptStr spring.encrypt.responseEncryptUriList[1]=/encryptEntity spring.encrypt.responseEncryptUriList[2]=/save spring.encrypt.responseEncryptUriList[3]=/encryptEntityXml spring.encrypt.responseEncryptUriList[4]=/decryptEntityXml
如果感覺配置比較繁瑣,你的加解密接口很多,需要大量的配置,還可以采用另一種方式來標識加解密,就是注解的方式。
響應的數據需要加密,就在接口的方法上加@Encrypt注解
@Encrypt @GetMapping("/encryptEntity") public UserDto encryptEntity() { UserDto dto = new UserDto(); dto.setId(1); dto.setName("加密實體對象"); return dto; }
接收的數據需要解密,就在接口的方法上加@Decrypt注解
@Decrypt @PostMapping("/save") public UserDto save(@RequestBody UserDto dto) { System.err.println(dto.getId() + " " + dto.getName()); return dto; }
同時需要加解密那么兩個注解都加上即可
@Encrypt @Decrypt @PostMapping("/save") public UserDto save(@RequestBody UserDto dto) { System.err.println(dto.getId() + " " + dto.getName()); return dto; }Spring MVC中使用
Spring MVC中可以直接在web.xml中注冊Filter,不方便傳遞的是配置的參數,我們可以配置一個自定的過濾器,然后在這個過濾器中配置EncryptionFilter
public class ApiEncryptionFilter implements Filter { EncryptionFilter filter = null; @Override public void init(FilterConfig filterConfig) throws ServletException { EncryptionConfig config = new EncryptionConfig(); config.setKey("abcdef0123456789"); config.setRequestDecyptUriList(Arrays.asList("/save")); config.setResponseEncryptUriList(Arrays.asList("/encryptEntity")); filter = new EncryptionFilter(config); } @Override public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { filter.doFilter(request, response, chain); } @Override public void destroy() { } }
web.xml
自定義加解密過濾器 ApiEncryptionFilter com.cxytiandi.mvc.filter.ApiEncryptionFilter ApiEncryptionFilter /*
如果需要使用注解的話需要在spring的xml中配置ApiEncryptDataInit
注意事項
要么使用手動注冊Filter的方式開啟加解密功能,手動構造EncryptionConfig傳入EncryptionFilter中,要么使用@EnableEncrypt開啟加解密功能。
@EnableEncrypt+配置文件可以在Spring Boot,Spring Cloud Zuul中使用
@EnableEncrypt+@Encrypt+@Decrypt可以在Spring Boot,Spring MVC中使用
相同URI問題
當存在兩個相同的URI時,比如GET請求的/user和POST的請求/user。如果只想對其中某一個進行處理,我們的邏輯的是按照URI進行匹配,這樣就會影響到另一個,原因是URI是一樣的。
如果是使用@Encrypt+@Decrypt的方式,框架會自動處理,會為每一個URI加上前綴來區分不同的請求方式。同時提供了擴展的屬性值,在@Encrypt+@Decrypt中都有value屬性,可以手動配置uri。因為某些框架不是用的Spring MVC的注解,比如CXF,框架無法做到適配所有的注解,這個時候可以用uri屬性來配置。
配置格式為:請求類型+訪問的URI
get:/user post:/user
包括在配置文件中也可以采用前綴的方式來區分相同的URI。
歡迎加入我的知識星球,一起交流技術,免費學習猿天地的課程(http://cxytiandi.com/course)文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/73507.html
摘要:關于框架的使用文章請參考前后端交互如何保證數據安全性數據加密框架版本發布啦今天的主題是帶領大家去了解框架的實現原理以及如何去封裝一個框架,封裝框架的時候需要考慮哪些東西。 關于框架的使用文章請參考: 前后端API交互如何保證數據安全性?:http://cxytiandi.com/blog/det... API數據加密框架monkey-api-encrypt:http://cxytian...
摘要:相比之前的變化內置加密算法,可以配置不同的加密不再綁定,通過配置即可使用加解密框架也可以支持支持用戶自定義加密算法地址示例代碼沒有發布到中央倉庫,只發布到這個倉庫,大家也可以自行下載源碼打包傳到自己公司的私服上。 之前有寫過一篇加密的文章《前后端API交互如何保證數據安全性》。主要是在Spring Boot中如何對接口的數據進行自動加解密操作,通過注解的方式來指定是否需要加解密。 原理...
摘要:官網歡迎您了解發布的功能。中使用提交功能管理頁面等項目資源的變更。 BlockLang 官網:https://blocklang.com 歡迎您了解 Block Lang 0.2.0 發布的功能。此版本增加三個功能: 在項目中創建空頁面 在項目中創建分組 使用版本控制系統管理新創建的頁面 創建空頁面 頁面,等同 web 項目中的網頁,或小程序中的頁面,其中包含頁面布局、頁面樣式和...
摘要:前幾天的北京阿里云峰會,阿里巴巴正式宣布對外開源長期支持版本。此次,阿里巴巴發布的預覽版本對應的版本。同時對于阿里云,會針對的兩個版本和隨阿里云鏡像發布,免費提供給阿里云客戶使用。年月,發布,根據阿里大數據場景的定制版發布。 前幾天的北京阿里云峰會,阿里巴巴正式宣布對外開源 OpenJDK 長期支持版本 Alibaba Dragonwell。作為 Java 全球管理組織 Java Co...
閱讀 1438·2021-09-22 15:43
閱讀 2154·2019-08-30 15:54
閱讀 1154·2019-08-30 10:51
閱讀 2082·2019-08-29 18:35
閱讀 426·2019-08-26 11:58
閱讀 2476·2019-08-26 11:38
閱讀 2432·2019-08-23 18:35
閱讀 3627·2019-08-23 18:33