【问题标题】:How to implement an invitation code to share resource with another user?如何实现邀请码与其他用户共享资源?
【发布时间】:2010-12-02 08:07:09
【问题描述】:

我们希望能够与新用户或其他用户共享 Web 应用程序内的资源。我们想通过实现一个邀请码来做到这一点。我之前已经在其他应用程序(例如 google 文档)中多次看到此实现,您将邀请码发送给另一个用户,而另一个用户将拥有第一个用户同意的任何访问权限。

我确信一定有一个模式,或者最好的方法已经记录在某个地方,我只需要正确的词来寻找它。有人能指出我正确的方向吗?下面是用例:

  1. 用户一 (user1) 有一个包含多个空格的帐户。
  2. User1 想与 User2 共享一个特定的空间 (space9)(在或不在用户表上)。
  3. 用户1向用户2的邮箱发送邀请码。
  4. User2注册并输入邀请码或点击链接使用邀请码注册。
  5. User2 可以访问 space9 并且只能访问 space9,不能访问 user1 的任何其他空间寄存器。

编辑 1:(根据标记答案使用的可能算法):

在我的域模型中,我有用户和帐户,每个用户都有 0 个或多个帐户。然后我们还有 SharedSpace,每个用户有 0 个或多个共享空间,每个帐户可能有 0 个或多个共享空间。现在 Sharespace 将包含 (inviationCode, spaceCode, active (yes), expiration, email (share with)。

任何拥有帐户 (acct1) 的用户都可以与

共享空间
acct1.shareSpace("spaceCodeToShare","Emailofusertosharewith");

shareSpace(string,string) 方法将执行以下操作:

  1. 创建邀请码并将其发送到电子邮件
  2. 如果用户已注册,他会通过单击或输入来激活其代码(使用 authorize 或 customAuthorize 属性和 IPrincipal 来防止未经授权的访问)。
  3. 如果用户未注册,则他登录并在为该用户创建用户条目后激活代码。
  4. 如果用户从未激活代码,则代码将过期并且活动状态切换为 false。

你认为我遗漏了什么吗,它看起来比我想象的要简单?

【问题讨论】:

    标签: c# asp.net asp.net-mvc algorithm


    【解决方案1】:

    我不确定现有的模式。但这可以通过具有良好关系的 sharedRights 表结构来完成。

    • sharedRights 表获得了 resourceNames(spaces) 、所有者名称(作者)和获得共享访问权限的人(共享用户)。
    • sharedRights 是用户的子表(它将引用作者和共享用户)和资源名称(空格)。

    如果你还想规范化结构

    • 您可以创建具有用户关系(多对多)的 SharedUsers
    • SharedResources 将具有 SharedUsers 的 ID 和资源名称(多对多)
    • 还有 SharedRights,它定义了 sharedusers 和 sharedresources 的访问权限

    最后会是这样的

     Users     ---- SharedUsers      |
                                      ------- SharedRights
     Resourcss ---- SharedResources  |   
    

    接受邀请后,您必须使用必要的信息填充这些表格。通过引用这些表来授予共享用户的权限很简单。

    【讨论】:

      【解决方案2】:

      在我看来权限方面最好使用 访问控制列表 (ACL) 建模。每个资源都有一个关联的 ACL,默认情况下,只有原始所有者拥有该资源的权限。

      当您发送邀请代码时,您会记录该代码及其所代表的权限。您需要将该关联记录在数据库等持久存储中。

      当受邀用户激活邀请码时,您将您记录的潜在权限提升为真实权限。

      我写了更多关于基于 ACL 的安全性 herehere

      【讨论】:

        猜你喜欢
        • 2023-03-28
        • 2021-05-04
        • 1970-01-01
        • 1970-01-01
        • 2013-08-25
        • 1970-01-01
        • 2016-12-16
        • 1970-01-01
        • 2018-07-13
        相关资源
        最近更新 更多