Asp.net mvc ASP.NET MVC:如何在编辑操作中验证实体所有权?

Asp.net mvc ASP.NET MVC:如何在编辑操作中验证实体所有权?,asp.net-mvc,attributes,Asp.net Mvc,Attributes,在ASP.NET MVC应用程序中,我想验证编辑操作(已在get上)的实体所有权。 我已经实现了自定义IPrincipal,所以我有实际的用户ID,但是如何将其与实体属性进行比较呢 我看到的唯一方法是加载实体并对其进行比较,这会在每个操作方法中产生一堆if条件 理想的情况是某个属性,但在该属性中,我只有实体ID,而不是实体本身,并且不能将任何对象(或实体或存储库)传递给该属性 你如何解决这个问题 谢谢我通过EntityBase上的扩展方法解决了这个问题,实现了接口IOOwnedEntity(具有

在ASP.NET MVC应用程序中,我想验证编辑操作(已在get上)的实体所有权。 我已经实现了自定义IPrincipal,所以我有实际的用户ID,但是如何将其与实体属性进行比较呢

我看到的唯一方法是加载实体并对其进行比较,这会在每个操作方法中产生一堆if条件

理想的情况是某个属性,但在该属性中,我只有实体ID,而不是实体本身,并且不能将任何对象(或实体或存储库)传递给该属性

你如何解决这个问题


谢谢

我通过EntityBase上的扩展方法解决了这个问题,实现了接口IOOwnedEntity(具有两个属性:Id和OwnerId)。

在这个扩展方法中,我将IOwnedEntity.OwnerId与实际用户Id(从cookies中获取)进行比较,如果不相等,我将抛出我自己的类型异常(NotAuthorizedException)。

看看Thank,使用thread,但这不是我猜测的方式。因为在“获取编辑”操作中,您只能获取业务对象的ID(而不是对象本身),并且无法在属性中获取对象值,也无法注入存储库。您可以提供示例代码吗?您是否仍然从DB加载实体以进行比较?你能提供一些示例代码吗?这是一个如此普遍的要求,而最佳实践在web上的记录似乎很差。我也处在同样的情况下,似乎有很多次去DB,我希望在不影响安全的情况下避免。