使用基于声明的模型设计ASP.Net MVC应用程序授权。假设我们有一个名为“Product”的对象。通常有4个不同的操作-创建、编辑、删除和查看。使用ClaimsAuthorize属性进行授权。
[Authorize]
public class ProductController : Controller
{
[ClaimsAuthorize("Product", "VIEW")]
public List<Product> GetProducts()
{
// ....
}
[ClaimsAuthorize("Product", "CREATE")]
public Product CreateNewProduct(Product product)
{
//....
}
}
然而在我的情况下,我必须支持不同类型的编辑权限:
如果同一用户最初创建了产品,则某些用户可以编辑该产品
如果产品属于特定类别并且用户也可以访问相同的类别,则某些用户可以编辑该产品
某些用户可以编辑所有产品(这是正常的产品编辑操作)
如何优雅地授权所有这些编辑操作(最好是属性驱动,如上所示),同时我希望将授权代码与普通MVC控制器代码和业务逻辑分开。
【上面的代码示例语法不正确,我只是为了解释这个问题而编写的】请告诉我您的想法。