【问题标题】:Data level Authorization filter in ASP.Net MVC Entity Framework applicationASP.Net MVC Entity Framework 应用程序中的数据级授权过滤器
【发布时间】:2012-10-17 20:58:12
【问题描述】:

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

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

例如:任务表 { 整数标识, 字符串任务名称, 日期时间开始日期, 日期时间结束日期 }

整个数据将显示给所有用户,用户也可以选择编辑字段。但应限制编辑选项如下
角色管理员可以编辑所有字段
角色管理器可以编辑 TaskName,但不能编辑 StartDate 和 EndDate
角色用户不能编辑任何字段

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

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

【问题讨论】:

  • 分享您的研究对每个人都有帮助。告诉我们您发现了什么以及为什么它不能满足您的需求。这表明您已经花时间尝试帮助自己,它使我们免于重复明显的答案,最重要的是它可以帮助您获得更具体和相关的答案。 stackoverflow.com/questions/how-to-ask
  • 如果您了解 asp.net MVC 应用程序,您将知道我们只能在操作级别应用授权过滤器,而不是特定于数据级别。因此,无论我能提供什么信息,我都会在这里解释如果您有任何具体问题,请告诉我。
  • 您似乎在陈述需求列表并要求提供完整的解决方案,即plzsendtehcodez。这个网站不是那样工作的。另请参阅mattgemmell.com/2008/12/08/what-have-you-tried
  • 来这里寻找代码和解决方案和建议的人。如果您查看网站中的问题,其中大多数将用代码解释解决方案,这将使许多正在寻找类似解决方案的其他人受益。很少有人像你这样通过结束这样的问题来结束这一切。
  • @gvLearner - 没有这样的过滤器。 MVC 和 Entity Framework 是两个独立的库,虽然它们相互补充得很好,但它们并不相关。由于过滤器是一个 MVC 结构,实体框架对它们一无所知。

标签: asp.net-mvc entity-framework asp.net-mvc-4 authorize


【解决方案1】:

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

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

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

希望对你有帮助。

【讨论】:

    【解决方案2】:

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

    自动化子系统解释here

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

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        【解决方案4】:

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

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

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

          • Edit(TaskName, StartDate, EndDate) 用于管理员
          • Edit(TaskName) 经理
          • 用户没有Edit 操作,因为不允许更改任何字段
        2. 使用authorization per action

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2011-03-28
          • 1970-01-01
          • 2013-10-07
          • 1970-01-01
          • 2017-04-08
          • 1970-01-01
          • 2023-03-13
          • 2014-07-18
          相关资源
          最近更新 更多