Java 在MVC中,我们在哪里处理权限?在控制器或模型级别?
我正在修补java框架并试图理解MVC 考虑这个场景:一个博客应用程序有版主和用户,两者都可以更新帖子。版主的更新会立即保存。用户的更新将排队等待版主批准。在MVC中,我们将逻辑放在哪里来决定是更新还是将更新排队 一种方法是在控制器中(伪代码):Java 在MVC中,我们在哪里处理权限?在控制器或模型级别?,java,model-view-controller,Java,Model View Controller,我正在修补java框架并试图理解MVC 考虑这个场景:一个博客应用程序有版主和用户,两者都可以更新帖子。版主的更新会立即保存。用户的更新将排队等待版主批准。在MVC中,我们将逻辑放在哪里来决定是更新还是将更新排队 一种方法是在控制器中(伪代码): 我使用这种方法是对的还是有更好的选择?我知道这是一个很老的问题,但我也有同样的问题,所以这可能会有所帮助: 在我当前的项目中,策略是分层授权检查。这样,检查将在最适合的地方进行: 如果这对数据的一致性很重要,那么在模型中进行检查(非常罕见的情况,需要
我使用这种方法是对的还是有更好的选择?我知道这是一个很老的问题,但我也有同样的问题,所以这可能会有所帮助: 在我当前的项目中,策略是分层授权检查。这样,检查将在最适合的地方进行:
- 如果这对数据的一致性很重要,那么在模型中进行检查(非常罕见的情况,需要在API文档中设置!)
- 大多数检查是在控制器级别进行的,因此大多数检查都在一个地方进行
- 一些检查是在“视图”中完成的(这意味着它们控制API的JSON输出,这反过来会改变前端的行为)。这是非常罕见的,因为它们主要基于控制器提供的数据,而不是直接查询用户的权限
public void function update() {
User user = User.find("byEmail");
if ( user.isModerator() ) {
post.update( args );
}
else {
// save post in a temporary table where it awaits approval.
}
}