No artigo anterior
eu mostrei como criar uma API de autenticação em ASP.Net Core com JWT. Hoje
iremos ver como podemos obter o usuário autenticado, extraindo os dados do token
de uma forma muito simples.
Para isso o ASP.Net Core oferece uma biblioteca de abstrações HTTP (pacote nuget
Microsoft.AspNetCore.Http.Abstractions)
que contém a interface IHttpContextAccessor.
A classe HttpContextAccessor implementa tal interface, e possui uma
propriedade onde podemos obter o **HttpContext **da requisição e com ele a
identidade do usuário logado. Ela deve ser registrada no contêiner de DI como
Singleton.
Para simplificar as coisas, podemos criar uma classe que representa nosso
usuário logado na aplicação, em meu caso ela se chama AuthenticatedUser, e
recebe em seu construtor uma instância de IHttpContextAccessor.
Também devemos fazer o registro dessa classe no contêiner de DI, e ela deve ser
utilizada onde for necessário obter o usuário logado.
O HttpContext será recriado à cada nova requisição HTTP na aplicação.
Com isso podemos injetar um **AuthenticatedUser **em qualquer classe que
precisarmos dele.
Conclusão
Fazendo uso do HttpContextAccessor em conjunto com a injeção de
dependências, temos um jeito fácil de obter o usuário autenticado e utilizá-lo
em qualquer camada de nossa aplicação conforme a necessidade. Em versões
anteriores do ASP.Net isso também era possível, porém um pouco mais trabalhoso.
Com isso temos á nossa disposição um recurso muito poderoso que nos dá muita
flexibilidade ao se trabalhar com o contexto da requisição HTTP em nossas
aplicações.
Espero que tenham gostado e se ficou alguma dúvida, ou tenham críticas e
sugestões entrem em contato.
Abraços!