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

问题的出现是因为,与许多系统一样,不同的用户需要访问不同的功能。有些角色可以访问 Y 按钮,其他角色可以访问 Y 和 B 按钮,而另一个角色仍然只能访问 B。在我看到的大多数情况下,开发人员只是放入一堆 if 语句来处理 UI 状态。我担心的是,如果不加以控制,这将变得难以维护,因为除了将授权逻辑放入 GUI 之外,还需要将其放入 Web 服务(通过 ajax 调用)中,以确保只有授权用户才能调用某些方法。

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

为清楚起见,这是一个使用 Web 表单的 ASP.NET Web 应用程序,并且 脚本# 用于 AJAX 功能。不要让脚本# 影响您的回答,它与 asp.net ajax 没有本质上的不同:-)

有帮助吗?

解决方案

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

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

其他提示

在代码完成 (p. 11) 中411) 史蒂夫·麦康奈尔给出了以下建议(比尔·盖茨在微软广告中将其视为睡前故事)。

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

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

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

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top