我们希望能够与新用户或其他用户共享我们的Web应用程序内的资源。我们希望通过实施邀请代码来实现此目的。我之前已经在其他应用程序(例如谷歌文档)中看到过这种情况,其中您向另一个用户发送邀请代码,而其他用户将拥有第一个用户同意的任何访问权限。
我确信必须有一个模式,或者已经记录在某处的最佳方法,我只需要正确的单词来寻找它。有人能指出我正确的方向吗?以下是用例:
编辑1:(根据标记答案可能使用的算法):
在我的域模型中,我有用户和帐户,每个用户有0个或更多帐户。然后我们也有SharedSpace,每个用户有0个或更多的共享空间,每个帐户可能有0个或更多的共享空间。现在,Sharespace将包含(inviationCode,spaceCode,active(yes),expiration,email(share with)。
拥有帐户(acct1)的任何用户都可以与
共享空间acct1.shareSpace("spaceCodeToShare","Emailofusertosharewith");
方法shareSpace(string,string)将执行以下操作:
- 创建邀请代码并将其发送至电子邮件
- 如果用户已注册,则会激活其代码,无论是单击还是输入(使用authorize或customAuthorize属性和IPrincipal以防止未经授权的访问)。
- 如果用户未注册,则他登录并在创建此用户的用户条目后,他会激活该代码。
- 如果用户从未激活代码,则代码将过期,活动状态将切换为false。
醇>
你认为我错过了什么,看起来比我想象的要简单吗?
答案 0 :(得分:1)
在我看来,权限方面最好使用访问控制列表(ACL)进行建模。每个资源只有一个关联的ACL,默认情况下,只有原始所有者才拥有该资源的权限。
当您发出邀请代码时,您会记录该代码及其代表的权限。您需要在持久存储(例如数据库)中记录该关联。
当受邀用户激活邀请代码时,您可以将您录制的潜在权限提升为真实权限。
答案 1 :(得分:0)
我不确定现有的模式。但这可以通过良好关系的sharedRights表结构来完成。
如果你仍然想要挪威克拉下来
最后它会像
Users ---- SharedUsers |
------- SharedRights
Resourcss ---- SharedResources |
接受邀请后,您必须使用必要的信息填充这些表。通过引用这些表来向共享用户授予权限很简单。