where se puede almacenar la información del usuario en el proyecto API de .net core con angular
Tengo un proyecto angular y estoy usando .net core 2.o Web API. Almacené mi información de usuario en Jwt y quiero registrar cada operación de base de datos. Puedo acceder a la información del usuario enviando jwt y tomando desde request.header en el servidor. Pero el problema es, ¿dónde se puede almacenar? En mis antiguos proyectos de mvc, podía almacenar en sesión. Pero este proyecto es API. Y trabajamos con JWT no sesión. ¿Cómo puedo obtener esa información de usuario de la tienda durante el inicio de la solicitud? Y quiero acceder a UserInfo desde todas partes. Este es mi 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)
{
}
}
Mi arquitectura es así:
Contoller => Servicio => Repositorio. Entonces, tengo que enviar parámetros como UserInfo en todos los métodos. Por lo tanto, no quiero agregar todos los parámetros de métodos como UserInfo. Entonces, quiero aprender a deshacerme de este problema.
MyController.cs
[HttpGet("GetAllStudents")]
public async Task<ServiceResult>GetAllStudents()
{
var requestedUserId= context.HttpContext.Request.Headers["Authorization"];
return await (studentService.GetAllStudents(requestedUserId));
}
My service.cs
public async Task<ServiceResult> GetAllStudents(int requestedUserId)
{
return await unitOfWork.studentRepo.GetAllStudents(requestedUserId);
}
Mi repositorio.cs
public async Task<List<Student>> GetAllStudents(int requestedUserId)
{
LogOperation(requestedUserId);
return context.Students.ToList();
}
Puede ver que cada método que envía requestUserId. ¿Cómo puedo deshacerme de esto