AOP和UI元素的安全性

jle*_*bke 6 asp.net-mvc aop domain-driven-design

我正在开发一个应用程序,我们正努力尽可能地保持关注点分离.我们发现安全性的交叉问题造成了许多复杂问题.

但是,看起来这些可以使用属性和面向方面编程来缓解.

我将其理解为应用于域图层代码的方面,但是如果要将其应用于UI元素,该怎么办?例如,如果我不想在用户没有执行该功能的权限时显示按钮怎么办?

在我们的MVC应用程序中,此时我们必须编写(伪代码如下):

<% if (user.CanSeeSomeData) { <%=Html.TextBox("MyTextBox") } %>
Run Code Online (Sandbox Code Playgroud)

但是如果可能的话,我们想用属性a a AOP来控制显示.

有任何想法吗?

此外,如果有第三方,开源工具,这将是有用的,欢迎这些建议.

gra*_*fic 1

我想说视图不应该包含太多编程(或者根本不包含任何内容)。在禁止 P 的地方使用 AOP(或 la AOP)的想法看起来不太好。

让我们以不同的方式设计它。通常视图有一些控制关键字来执行基本操作:条件和循环。更多的情报,我想说你在那里混合了控制器的角色。

所以if (user.CanSeeSomeData)你放在那里,如果它实际上是一个简单的标志。这才是观点应该有的样子。

当您构建模型视图对象(放置视图信息的容器)时。例如,您可以使用 AOP 来初始化/设置该信息,并在该属性中使用一个很好的属性。

您可以询问属性而不是“ifs”

[UserCanSeeData]
<%=Html.TextBox("MyTextBox") %>
Run Code Online (Sandbox Code Playgroud)

这看起来像语法糖,而不是真正的 AOP。任何试图说 UserCanSeeData 应该有多个 if (如检查用户权限的数据库访问)的尝试都是将控制器代码移动到视图中。