2

我在我的 ASP.Net MVC 4 应用程序中寻找数据级授权过滤器。
我们正在使用实体框架进行数据访问。

应用程序需要显示所有数据,但应根据用户角色限制对表中某些字段的访问。

例如:TASK table { int Id, string TaskName, DateTime StartDate, DateTime EndDate }

整个数据将显示给所有用户,用户也可以选择编辑字段。但应限制编辑选项,如下所示
角色管理员可以编辑所有字段
角色管理员可以编辑任务名称但不能编辑开始日期和结束日期
角色用户不能编辑任何字段

所有这些编辑都将调用 TaskController 中的 Edit 操作。

如何在我的应用程序中实现该功能。

4

4 回答 4

1

你可以试试 Postsharp。PostSharp 允许您设计自定义属性以在编译时注入样板代码。应该可以将它用于您的示例等场景。我已经将它用于异常处理、日志记录、缓存和安全性。它可以应用于任何层或框架。

请参阅以下示例中的“保护字段和属性”:

http://www.sharpcrafters.com/solutions/authorization

希望能帮助到你。

于 2012-10-29T01:11:09.913 回答
1

这不是 EF,另一个 ORM,但可能有助于了解它是如何完成的——完整的源代码在这里

自动化子系统在这里解释。

它可以满足您的需求 - 行级、逐列粒度、基于角色的授权。

于 2013-05-04T09:10:56.943 回答
0

听起来您所追求的是一个真正的“业务”对象,它是智能的,并且包含属性级别的授权,而不仅仅是方法级别的授权。我建议使用 CSLA.NET 并使用智能对象创建您的业务对象模型。这为您提供了该功能以及其他一些功能。

于 2014-07-15T17:08:28.750 回答
0

整个数据将显示给所有用户,用户也可以选择编辑字段。但应该限制编辑选项

而不是任务控制器中的单个编辑操作

  1. 为每个允许编辑的唯一字段集创建特定操作

    • Edit(TaskName, StartDate, EndDate)对于管理员
    • Edit(TaskName)对于经理
    • 用户无Edit操作,因为不允许更改任何字段
  2. 每个操作使用授权

于 2016-02-21T12:52:29.520 回答