onde podem ser armazenadas informações do usuário no projeto da API do núcleo .net com angular
Eu tenho um projeto angular e estou usando .net core 2.o Web API. Eu armazenei minhas informações de usuário no Jwt e quero registrar todas as operações do banco de dados. Eu posso acessar as informações do usuário enviando jwt e retirando request.header no lado do servidor. Mas o problema é: onde pode ser armazenado? Nos meus projetos antigos de mvc, eu poderia armazenado em sessão. Mas este projeto é API. E trabalhamos com o JWT e não com a sessão. Como posso obter essa loja UserInfo durante o início do pedido? E eu quero acessar UserInfo de qualquer lugar. Esta é a minha actionFilter:
public class TestFilterAttribute : System.Web.Http.Filters.FilterAttribute, IActionFilter
{
public void OnActionExecuting(ActionExecutingContext context)
{
var requestedUserInfo= context.HttpContext.Request.Headers["Authorization"];
??????????????? = requestedUserInfo;
}
public void OnActionExecuted(ActionExecutedContext context)
{
}
}
Minha arquitetura é assim:
Contoller => Serviço => Repositório. Então, eu tenho que enviar parâmetros como UserInfo em todos os métodos. Então, eu não quero adicionar todos os métodos de parâmetro como UserInfo. Então, eu quero aprender a se livrar desse problema.
MyController.cs
[HttpGet("GetAllStudents")]
public async Task<ServiceResult>GetAllStudents()
{
var requestedUserId= context.HttpContext.Request.Headers["Authorization"];
return await (studentService.GetAllStudents(requestedUserId));
}
Meu service.cs
public async Task<ServiceResult> GetAllStudents(int requestedUserId)
{
return await unitOfWork.studentRepo.GetAllStudents(requestedUserId);
}
Meu repository.cs
public async Task<List<Student>> GetAllStudents(int requestedUserId)
{
LogOperation(requestedUserId);
return context.Students.ToList();
}
Você pode ver que todo método que envia o requestUserId. Como posso me livrar disso?