Мой общий ответ выглядит следующим образом (я оставил только соответствующий код):
Код: Выделить всё
public class MyResponse
{
public T data { get; set; }
public User user { get; set; }
public MyResponse(T inputData)
{
data = inputData;
}
}
Код: Выделить всё
public IActionResult Get()
{
var response = new MyResponse("Hello");
return Ok(response);
}
проблема заключается в том, как включить информацию о вошедшем в систему пользователе в .NET 5. В .NET 4.x вы можете получить доступ к HttpContext из любого места, чтобы вы могли заполнить свойство User. Но это невозможно в .NET 5.
Первое, что я попробовал, — это DI (с которым я новичок, поэтому, возможно, я не понимаю это должным образом); Я попытался сделать мой класс User зависимым от IHttpContextAccessor, поскольку большая часть документации указывает на:
Код: Выделить всё
public class User : IIdentity
{
private readonly IHttpContextAccessor _httpContextAccessor;
public User(IHttpContextAccessor httpContextAccessor)
{
_httpContextAccessor = httpContextAccessor;
}
}
Код: Выделить всё
services.AddHttpContextAccessor();
services.AddTransient();
Код: Выделить всё
var user = new User(); // This doesn't work, as the constructor requires one argument
Я мог бы передать HttpContext от контроллера к MyResponse, но это кажется совершенно неправильным (плюс, может контроллеры пишут другие люди, поэтому я думаю, что лучше, если им не нужно явно передавать это в ответ, это должно обрабатываться прозрачно).
Как я могу получить HttpContext в моем классе специального ответа?
Подробнее здесь: https://stackoverflow.com/questions/679 ... ata-in-asp
Мобильная версия