如何利用SpringAOP的返回通知處理數(shù)據(jù)加密返回
項(xiàng)目安全要求把所有返回值做加密處理,利用SpringAOP的返回切面可以簡單方便的做到該需求。
@Aspect
public class ResponseDataEncryptAspect {
private ObjectMapper objectMapper;
public ResponseDataEncryptAspect () {
this.objectMapper = new ObjectMapper();
// 保持空值也被序列化
objectMapper.setSerializationInclusion(JsonInclude.Include.ALWAYS);
}
// 攔截Controller內(nèi)帶@RequestMapper的方法及衍生注解即可
@AfterReturning(value = PointCut.CONTROLLER_POINT_CUT, returning = "res")
public void jsonDateEncrypt(JoinPoint joinPoint, Object res){
// 只處理JsonResult返回值
if (res instanceof JsonResult) {
JsonResult jsonResult = (JsonResult) res;
Object data = jsonResult.getData();
if (null != data) {
// 把data轉(zhuǎn)成json串,再把json串加密,再替換原來的data,vue攔截到data作全局解密,不影響已綁定的功能。
String json = objectMapper.writeValueAsString(data);
String cryptResult = ZYCryptUtils.encryptAES(json);
// 在全局響應(yīng)結(jié)果里添加一個(gè)布爾值,方便前端判斷到底是密文還是明文
jsonResult.setEncrypt(true);
jsonResult.setData(cryptResult);
}
}
}
}實(shí)際效果:

到此這篇關(guān)于利用SpringAOP的返回通知處理數(shù)據(jù)加密返回的文章就介紹到這了,更多相關(guān)SpringAOP數(shù)據(jù)加密返回內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
SpringBoot部署到外部Tomcat無法注冊到Nacos服務(wù)端的解決思路
這篇文章主要介紹了SpringBoot部署到外部Tomcat無法注冊到Nacos服務(wù)端,本文給大家分享完美解決思路,結(jié)合實(shí)例代碼給大家講解的非常詳細(xì),需要的朋友可以參考下2023-03-03
java并發(fā)編程之進(jìn)程和線程調(diào)度基礎(chǔ)詳解
這篇文章主要介紹了java并發(fā)編程之進(jìn)程和線程調(diào)度基礎(chǔ),具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-06-06
java使用CountDownLatch等待多線程全部執(zhí)行完成
這篇文章主要為大家詳細(xì)介紹了使用CountDownLatch等待多線程全部執(zhí)行完成,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-10-10
SpringBoot 動(dòng)態(tài)配置Profile環(huán)境的方式
這篇文章主要介紹了SpringBoot 動(dòng)態(tài)配置Profile環(huán)境的方式,本文通過圖文實(shí)例相結(jié)合給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-10-10
JDK自帶的序列化方式優(yōu)缺點(diǎn)及實(shí)現(xiàn)原理面試精講
這篇文章主要為大家介紹了JDK自帶的序列化方式優(yōu)缺點(diǎn)及實(shí)現(xiàn)原理面試精講,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-10-10

