我正在修改Play! java框架并尝试理解MVC。
考虑这种情况:博客应用程序有版主和用户,两者都可以更新帖子。主持人的更新会立即保存。用户的更新排队等待主持人批准。在MVC中,我们在哪里放置逻辑来确定是更新还是更新更新?
一种方法是在Controller中(伪代码):
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.
}
}
我是否正确使用这种方法还是有更好的选择?
答案 0 :(得分:2)
我知道这是一个很老的问题,但我也有同样的想法 - 所以这可能会有所帮助:
在我当前的项目中,策略是对授权检查进行分层。这样,检查将在最适合的地方完成:
我在阅读this帖后想出了解决方案。它提供了一个很好的总结,说明为什么使用控制器是一个好主意 - 以及替代方案。
主要原因是,为什么我选择控制器作为授权检查的地方,它允许模型(及其管理的数据)独立于应用程序逻辑 - 包括授权。
请记住,这完全取决于您想要达到的目标。我只想表明什么对我有用。