我们为什么不在MVC模型中嵌入身份验证(授权)逻辑?

时间:2019-10-16 18:06:18

标签: model-view-controller architecture

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

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

1 个答案:

答案 0 :(得分:2)

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

您会看到this thread where this is discussed(一个令人作呕的东西,并且有很多贪吃蛇的感觉)