我試圖確保用戶不能訪問或修改屬於其他用戶的表中的行。之後的所作所爲一些研究,這是方法我已經想出了(示例代碼)在檢索並提交對EF的SQL更改並且提交足夠安全之前檢查UserId?
public virtual ActionResult Edit(int id)
{
var myEntity = myEntityService.GetEntity(id);
if (myEntity == null)
return HttpNotFound();
if (myEntity.UserId != User.Identity.GetUserId())
return HttpNotFound();
MyEntityFormModel editMyEntity = Mapper.Map<MyEntity, MyEntityFormModel>(myEntity);
return View(editMyEntity);
}
}
而對於其他CRUD操作類似的方法:通過檢索其ID的實體,然後檢查,以確保用戶ID實體的屬性(從AspNet.Identity.GetUserId()中檢索並在創建期間存儲)與允許任何CRUD操作發生之前的用戶UserId匹配。
這是否足夠安全並且是一種讓人們不能訪問彼此數據的有效方式,還是應該實施另一項安全檢查?