背景 每个项目都有一个与其关联的帐户。每个用户都可以有权访问零到多个帐户。这又意味着每个用户只能根据用户的帐户权限访问项目的子集。对象模型授权 - OO设计问题
当用户登录到应用程序时,用户对象被加载,并且在该点也加载了帐户权限。该User对象存储在应用程序的缓存中。项目根据需要加载。
问题 什么是强制执行账户限制的最佳方式?我们希望将它从实际的表示逻辑中抽象出来,但我们认为将授权逻辑放在Project对象内并不是一个好方法,因为这取决于User对象。你们有什么感想?
实施例:(aspx页面代码后面)
Project oProject = New Project(projectId); //Pass an Int32 here
if (oProject.Load()) //This operation needs to check user permissions somehow
{ /* Do stuff */ }
那么我会将用户对象传递给项目对象吗? – 2009-08-05 15:23:28
间接地,通过它的接口。在这个解决方案中,你将无法避开项目和用户知道这个接口的事实,但是项目不需要知道它是否正在与用户或TestHarness等进行交谈。 – DanDan 2009-08-05 15:28:57