我正在编写一个具有一些ACL要求的Web应用程序:用户可以更改某些项目,某些项目可以由多个用户编辑,管理员可以编辑任何内容,而经理可以在其组织内编辑所有内容等。
我正在使用Play!框架,并根据Secure模块的外观,似乎将授权问题放在控制器中是合适的。但是,我认为授权问题是业务逻辑的一部分,因此应该在模型中处理。此外,我开始看到我需要重构的控制器中重复的逻辑。
另一方面,将授权添加到模型中意味着我必须有一种方法从模型内获取当前用户,这似乎不太对。或者,我可以将“current_user”参数添加到每个模型方法中,但那似乎更糟糕。
那么,常见做法是什么?我可以/应该将授权代码放在模型中,还是保留在控制器中?