我只是最近才开始使用MVC方法,所以我认为这对您来说很简单:
我在哪里放置访问控制?
在视图中?除了模板中的开关和标志之外,我不想有任何逻辑,所以听起来像是最不可行的选择
在模型中?每个业务对象是否应该根据谁的要求来决定将显示有关自身的哪些数据?
在控制器中?这就是我现在拥有的位置,但是很难保持业务规则的一致性
还是还有其他选择?
这将取决于您所使用的框架,而语言将决定您可以使用的许多工具。
从高层次上讲,您应该在进入点处配置访问安全性。而且,您应该仔细检查访问安全性的各个级别,这些级别可以被视为独立的,也可以从应用程序的多个部分重复使用(谁知道安全性是否由使用您的逻辑层的同事的门户检查过?等等)。另一个值得担心的问题是数据安全性,它尽可能地靠近您的数据(因此,属于上面的#2,但要理解它是独立的)。
这类似于我喜欢谈论的应用程序逻辑和域逻辑之间的差异。如果存在特定于一个特定应用程序的任何逻辑(与Windows服务相比,Web应用程序或其他任何逻辑),则应仅在该应用程序中定义该逻辑。如果某些逻辑跨越了应用程序之间的边界(可以在应用程序之间重用),则它可以视为领域逻辑,应在模型中定义。您的应用程序可以使用域逻辑,但是他们不应该拥有它。