2

好的,所以我正在寻找一些架构指导,我的团队有机会使用我们正在构建的新功能重新制定某些决策,我想看看 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 没有根本不同:-)

4

2 回答 2

1

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

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

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

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

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

于 2008-10-15T02:26:42.007 回答
1

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

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

于 2008-10-15T20:01:15.513 回答