У меня есть MemoController
, который получает некоторые заметки (с именем, описанием, идентификатором, идентификатором пользователя). Каждая заметка принадлежит одному пользователю. Я создал контроллер API для получения заметки по идентификатору.
[HttpGet("{memoId}")]
[Authorize]
public async Task<ActionResult> Get(Guid memoId)
{
// A way to get user id
//var userId = User.Identity.IsAuthenticated ? Guid.Parse(User.Identity.Name) : Guid.Empty;
var memo = await _memoService.GetByIdAsync(memoId); // Can get memo from other users
if (memo == null) return NotFound();
return Json(memo);
}
Каждый пользователь должен иметь доступ только к своим заметкам. Проблема в том, что прямо сейчас пользователь может получать заметки, принадлежащие другим пользователям. Можно ли ввести что-то вроде UserMemoService
, которое получает идентификатор пользователя из System.Security.Claims
? Я хочу сделать это, следуя принципам DDD (не реализуя сервис в конструкторе контроллера или более сложный беспорядок).