package cc.mrbird.febs.common.advise; import cc.mrbird.febs.common.contants.AppContants; import cn.hutool.crypto.SecureUtil; import cn.hutool.crypto.asymmetric.KeyType; import cn.hutool.crypto.asymmetric.RSA; import com.alibaba.fastjson.JSONObject; import org.springframework.beans.factory.annotation.Value; import org.springframework.core.MethodParameter; import org.springframework.http.MediaType; import org.springframework.http.server.ServerHttpRequest; import org.springframework.http.server.ServerHttpResponse; import org.springframework.web.bind.annotation.ControllerAdvice; import org.springframework.web.servlet.mvc.method.annotation.ResponseBodyAdvice; /** * @author wzy * @date 2022-06-14 **/ @ControllerAdvice public class MyResponseBodyAdvise implements ResponseBodyAdvice { @Value("${system.debug}") private boolean isDebug; @Override public boolean supports(MethodParameter methodParameter, Class aClass) { return true; } @Override public Object beforeBodyWrite(Object o, MethodParameter methodParameter, MediaType mediaType, Class aClass, ServerHttpRequest serverHttpRequest, ServerHttpResponse serverHttpResponse) { if (!AppContants.ENCRYPT_METHOD.contains(methodParameter.getMethod().getName()) || isDebug) { return o; } RSA rsa = new RSA(AppContants.RESP_PRIVATE_KEY, AppContants.RESP_PUBLIC_KEY); return rsa.encryptBase64(JSONObject.toJSONString(o), KeyType.PublicKey); } }