我最近才开始使用MVC方法,所以我想这对你们大家来说很简单:
我在哪里放置访问控制?
或者还有其他选择吗?
答案 0 :(得分:4)
这将取决于您使用的框架,语言将决定您可以使用的许多工具。
从较高级别开始,您应该在入口点配置访问安全性。您应该仔细检查每个级别的访问安全性,这些级别可以被认为是自治的,或者从应用程序的多个部分重用(谁知道安全性是否由您的同事使用逻辑层的门户进行检查等等)。另一件需要担心的事情是数据安全性,它尽可能地接近您的数据(所以,对于您的#2,是的,但要理解它是独立的。)
这类似于应用逻辑和域逻辑之间的区别,我喜欢谈论它。如果存在特定于某个特定应用程序的逻辑(Web应用程序与Windows服务相比,或其他任何),那么该逻辑应仅在该应用程序中定义。如果某些逻辑跨越应用程序之间的边界(在应用程序之间可重用),那么它就有资格作为域逻辑,应该在模型中定义。您的应用程序可以使用域逻辑,但它们不应该拥有它。
答案 1 :(得分:0)
对于模型(也称为数据)安全性,模型将“控制”访问,并且Controller将“促进”访问。这样可以独立于Controller重用模型,并最小化,如果不能否定使用模型的不同控制器所需的通用代码复制。
例如Car,Driver和Key。 (模型,控制器,API)。凭借非常小的接口(key == API),Model允许或拒绝每个API(密钥卡)的Controller访问。允许不同类型的访问(代客密钥,所有者密钥,所有者FOB)。使用代客键接口,控制器将无法访问模型的某些数据/功能,如手套箱,行李箱和油箱。这实际上是模型通过使用非常小的API /命令表面区域识别和分类控制器来实现的基于角色的访问。
这意味着模型可以被其他控制器(具有不同驱动程序的汽车)使用,只需要基本认证即可访问模型的数据(汽车的功能和隔间)。