En ce moment, je renvoie une réponse cryptée

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

Je veux retourner une réponse cryptée comme

(IActionResult)Ok(jsonResponse);
1
Vikas Shinde 24 févr. 2020 à 16:55

1 réponse

Meilleure réponse

Vous pouvez également utiliser un middleware.

 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;
                }
            });

Ce code n'écrit que des données cryptées sur des données simples. Il est préférable d'effacer les données simples puis d'écrire de nouvelles données cryptées dans le corps de la réponse.

1
Mohammad niazmand 29 févr. 2020 à 06:24