项目需求:
接口返回的数据,存在一些敏感信息,不希望其他用户看到,将Data进行加密传输
代码如下:
public class EncryptDataFilterAttribute : ActionFilterAttribute { public override void OnActionExecuted(HttpActionExecutedContext actionExecutedContext) { base.OnActionExecuted(actionExecutedContext); var actionList=actionExecutedContext.ActionContext.ActionDescriptor.GetCustomAttributes<EncryptDataAttribute>(); var controllList= actionExecutedContext.ActionContext.ControllerContext.ControllerDescriptor.GetCustomAttributes<EncryptDataAttribute>(); if (actionList.Any()||controllList.Any()) { if (((System.Net.Http.ObjectContent)actionExecutedContext.Response.Content).Value is AjaxResCode) { AjaxResCode result = actionExecutedContext.Response.Content.ReadAsAsync<AjaxResCode>().Result; if (result.Data!=null&&!string.IsNullOrWhiteSpace(result.Data.ToString())) { string data= Newtonsoft.Json.JsonConvert.SerializeObject(result.Data); //数据加密过程 result.Data = AesEncrypt.Encrypt(data, "123456"); string res = Newtonsoft.Json.JsonConvert.SerializeObject(result); HttpResponseMessage response = new HttpResponseMessage { Content = new StringContent(res, Encoding.GetEncoding("UTF-8"), "application/json") }; actionExecutedContext.Response = response; } } } } }