A solução para esse problema é adicionar metadados, como ID de usuário ou nome de usuário para enriquecer seus traços. Para conseguir isso, implementaremos um componente de middleware em nosso projeto. Lembre -se de que, no CORE ASP.NET, um middleware é um componente capaz de lidar com solicitações e respostas HTTP, conectando -se ao pipeline de processamento de solicitação.

Crie um middleware para capturar o contexto do usuário

Um componente de middleware no núcleo asp.net é representado por uma classe que se parece com qualquer outra classe C# e contém o método Invokeasync. Para implementar o middleware para este exemplo, crie uma nova classe chamada MyuserContextMiddleware em seu projeto. Inicialmente, esta classe deve ficar assim:


public sealed class MyUserContextMiddleware
{
    public async Task InvokeAsync(HttpContext context)
    {
        //Not yet implemented
    }
}

No núcleo do ASP.NET, um middleware deve ter um construtor que aceite uma referência a uma instância de um tipo RequestDelegate como um parâmetro. Para ser mais preciso, um requestDelegate é semelhante a qualquer outro delegado que aceite um HTTPContext e retorna uma tarefa, como mostrado no trecho de código fornecido abaixo.


public class MyUserContextMiddleware
{
    private readonly RequestDelegate _next;
    public MyUserContextMiddleware(RequestDelegate next)
    {
        _next = next;
    }
    public async Task InvokeAsync(HttpContext context)
    {
        //Not yet implemented
    }
}

Você também pode escrever a parte do código acima, como mostrado abaixo.