1

Right now I am returning an encrypted response

(IActionResult)Ok(_encryptFunction.Encrypt(jsonResponse));

I want to return an encrypted response like

(IActionResult)Ok(jsonResponse);
Ranjit Singh
  • 3,715
  • 1
  • 21
  • 35
Vikas Shinde
  • 58
  • 1
  • 11
  • Reference [Write custom ASP.NET Core middleware](https://learn.microsoft.com/en-us/aspnet/core/fundamentals/middleware/write?view=aspnetcore-3.1) – Nkosi Feb 24 '20 at 14:22
  • basically I need to override Ok() Object Result to return an encrypted response. So it is possible through middleware or action filter ? @Nkosi – Vikas Shinde Feb 25 '20 at 06:32
  • Hey Vikas Shinde, check this code,I hope it helps you. – Mohammad Niazmand Feb 29 '20 at 06:25

1 Answers1

2

You can use middleware, too.

 app.Use(async (context, nextMiddleware) =>
            {
                context.Request.EnableRewind();
                Stream originalBody = context.Response.Body;

                try
                {
                    using (var memStream = new MemoryStream())
                    {
                        context.Response.Body = memStream;

                        await nextMiddleware();

                        memStream.Position = 0;
                        string responseBody = new StreamReader(memStream).ReadToEnd();


                        memStream.Position = 0;
                        byte[] data = Encoding.UTF8.GetBytes(responseBody);//Encrypt responseBody here
                        memStream.Write(data, 0, data.Length);


                        memStream.Position = 0;

                        await memStream.CopyToAsync(originalBody);
                    }

                }
                finally
                {
                    context.Response.Body = originalBody;
                }
            });

This code just write encrypted data over simple data.It's better to clear simple data then write new encrypted data in Response body.

Mohammad Niazmand
  • 1,509
  • 9
  • 13
  • The provided answer shows how to do Encoding (which can be easily reversed), not Encrypting - please see the differences here: https://stackoverflow.com/questions/4657416/difference-between-encoding-and-encryption – Petre T Feb 08 '21 at 20:06