【发布时间】:2018-07-03 18:53:53
【问题描述】:
我有一个MemoController,它会得到一些备忘录(带有名称、描述、id、userId)。每个备忘录属于一个用户。我创建了一个 API 控制器来通过 id 获取备忘录。
[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 获取用户ID 的东西?我想遵循 DDD 原则(不在 Controller 的构造函数中实现服务或更复杂的混乱)。
【问题讨论】:
标签: .net asp.net-core-mvc authorization domain-driven-design