代码之家  ›  专栏  ›  技术社区  ›  SDReyes

NETMVC优雅的用户界面和ModelBinder授权

  •  2
  • SDReyes  · 技术社区  · 15 年前

    但是,我仍然没有找到一种优雅的方法来使用当前用户角色过滤UI组件(例如,小部件、表单元素、表等),而不会用业务逻辑污染视图。同样适用于模型绑定。


    例子

    产品创造

    领域:

    • 价格
    • 优惠

    • 角色管理员

      • 允许查看和修改价格字段
      • 允许查看和修改折扣
      • 允许查看和修改名称
      • 允许查看和修改价格

    Fields 每个角色所表现出来的都是不同的,也是不同的 model binding 需要忽略 discount field “管理员助理”角色。

    3 回复  |  直到 15 年前
        1
  •  1
  •   JoseMarmolejos    15 年前

    由于您已经拥有当前用户和对控制器中授权提供程序的访问权限,因此这是他们的理想职责。使用一个简单的实现,您可以在筛选当前用户可以访问哪些小部件之后,将一组小部件传递给您的视图。在表单字段的情况下,当您考虑客户端验证时,可能会出现问题。

    绑定部分将是最直接的,为这些特殊情况提供一个定制的绑定器将很好地实现这一点,因为它可以访问控制器上下文,并且您可以从那里获取当前用户,并根据您的角色定义绑定值。

        2
  •  3
  •   Keltex    15 年前

    我认为这样做的方法是创建自己版本的 input extension methods . 例如,而不是 TextBox 你可以创造 TextBoxRoles 定义如下:

    public static MvcHtmlString TextBoxRoles(
        this HtmlHelper htmlHelper,
        string name,
        string RolesEdit,
        string RolesView
    )
    

    在代码中,它看起来是这样的:

    <%= Html.TextBoxRoles("Price", "Administrator","Administrator,Assistant") %>
    

    文本框角色 User.IsInRole() 以确定页面上应显示的内容。

        3
  •  1
  •   Scott Hanselman    15 年前

    像LinFu这样的AOP框架呢?如果它是横切的,那么声明它是这样的,并将其视为这样。

    推荐文章