首页 > 解决方案 > 为什么我们不在 MVC 模型中嵌入认证(授权)逻辑?

问题描述

据说 MVC 中的模型包含任何业务逻辑。如果这是真的,那么,我认为身份验证是模型的作用。“你的经理可以改变员工的薪水,但你的员工不能改变你的薪水。” 是业务逻辑。因此,员工模型应该包含验证逻辑,检查向他们发送消息的人是否是经理。

但是,身份验证逻辑通常由控制器处理。为什么模型中没有身份验证逻辑?

标签: model-view-controllerarchitecture

解决方案


我认为您混淆了身份验证和授权。身份验证(识别用户)通常由控制器处理,但该用户所做的(如您的示例)是授权,并且通常更深入地嵌入到业务逻辑中。大多数模型将具有某种形式的“用户”,它将具有一组权限,这些权限将传递到业务逻辑层。

您可以看到讨论这个问题的线程(令人作呕,并且带有相当多的恶作剧)


推荐阅读