【问题标题】:Scalable/Reusable Authorization Model可扩展/可重用的授权模型
【发布时间】:2008-10-15 01:48:29
【问题描述】:

好的,所以我正在寻找一些架构指导,我的团队有机会使用我们正在构建的新功能重新制定某些决策,我想看看 SO 的想法 :-)当然,有些事情我们不会改变,所以解决方案必须适合这个模型。也就是说,我们有一个 ASP.NET 应用程序,它使用 Web 服务来允许用户在系统上执行操作。

问题的出现是因为与许多系统一样,不同的用户需要访问不同的功能。一些角色可以访问 Y 按钮,而其他角色可以访问 Y 和 B 按钮,而另一个角色仍然只能访问 B。大多数时候,我看到这个,开发人员只是把 if 语句混杂在一起来处理用户界面状态。我担心如果不加以检查,这将成为无法维护的混乱,因为除了将授权逻辑放在 GUI 中之外,还需要将其放在 Web 服务中(通过 ajax 调用)以确保只有授权用户才能调用某些方法.

所以我的问题是,如何设计一个系统来减少检查特定角色的随机临时 if 语句,这些语句可以在 GUI/Webform 代码和 Web 服务中重复使用代码。

为了清楚起见,这是一个 ASP.NET Web 应用程序,使用 Web 表单,Script# 用于 AJAX 功能。不要让脚本#让您无法回答,它与 asp.net ajax 没有根本不同:-)

【问题讨论】:

    标签: asp.net ajax authorization script#


    【解决方案1】:

    从传统的组、角色或操作级别权限转移到“基于声明”的授权,就像 WCF 提供的一样。

    Zermatt 是 Microsoft 类库的代号,它将帮助开发人员在服务器和客户端上构建基于声明的应用程序。 Active Directory 将成为应用程序能够与您自己以及其他行业标准服务器同时授权的 STS 之一...

    【讨论】:

      【解决方案2】:

      在 Code Complete (p. 411) 中,Steve McConnell 给出了以下建议(比尔·盖茨将其解读为 Microsoft 商业广告中的睡前故事)。

      “在适当的情况下使用,表格驱动的代码比复杂的逻辑更简单,更容易修改,效率更高。”

      “您可以使用表格来描述过于动态而无法在代码中表示的逻辑。”

      “表驱动的方法比以前的方法更经济[死记硬背的面向对象设计]”

      使用基于表格的方法,您可以轻松添加新的“用户”(就像在用户/代理及其操作的建模理念中一样)。这是避免许多“如果”的好方法。我以前曾在像你这样的情况下使用过它,它使代码保持整洁。

      【讨论】:

      • 好吧,用户和他的权限很可能是基于表的......但是你是否建议每个视图的配置(即哪些操作映射到哪些权限/角色)是表也是基于?
      猜你喜欢
      • 2021-09-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-22
      • 1970-01-01
      • 1970-01-01
      • 2012-07-04
      • 1970-01-01
      • 2018-08-16
      相关资源
      最近更新 更多