如何实现邀请码与其他用户共享资源?

2024-01-09

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

我确信必须有一种模式,或者已经在某处记录的最佳方法,我只需要正确的词语来寻找它。有人能指出我正确的方向吗?以下是用例:

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

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

在我的域模型中,我有用户和帐户,每个用户有 0 个或多个帐户。然后我们还有SharedSpace,每个用户有0个或多个共享空间,每个帐户可能有0个或多个共享空间。现在共享空间将包含(inviationCode、spaceCode、活动(是)、过期、电子邮件(共享)。

任何拥有帐户 (acct1) 的用户都可以与以下人员共享空间

acct1.shareSpace("spaceCodeToShare","Emailofusertosharewith");

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

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

你认为我错过了什么吗?它看起来比我想象的更简单?


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

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

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

我写了更多关于基于 ACL 的安全性的文章here https://stackoverflow.com/questions/1315221/what-is-the-best-mechanism-to-implement-granular-security-i-e-authorization-in/1315510#1315510 and here https://stackoverflow.com/questions/1335315/access-control-in-asp-net-mvc-depending-on-input-parameters-service-layer/1336404#1336404.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何实现邀请码与其他用户共享资源? 的相关文章

  • 将内置类型转换为向量

    我的 TcpClient 类接受vector
  • 如何从 .resx 文件条目获取注释

    资源文件中的字符串有名称 值和注释 The ResXResourceReader类让我可以访问名称和值 有办法看评论吗 你应该能够得到Comment via ResXDataNode class http msdn microsoft co
  • 从邻接表计算图的入度

    我遇到了这个问题 其中需要根据邻接列表表示来计算图的每个节点的入度 for each u for each Adj i where i u if i u E in degree u 1 现在根据我的说法 它的时间复杂度应该是O V E V
  • 用于检查项目文件中的项目变量和引用路径的 api

    我正在研究一个 net application VS2010 与 x 没有 解和变量号这些解决方案中的项目数量 我需要检查项目属性 特定于一定数量的项目 是否同质 并且检查 验证构建期间的参考路径 有没有一个API是这样的吗 如果没有 我该
  • C# Dns.GetHostEntry 不返回连接到 WiFi 的移动设备的名称

    我有一个 C 中的 Windows 窗体应用程序 我试图获取列表中所有客户端的主机名 下面给出的是 ra00l 来自此链接的代码示例 GetHostEntry 非常慢 https stackoverflow com questions 99
  • 如何在 C# 中定义文本框数组?

    您好 当我在 Windows 申请表上创建文本框时 我无法将其命名为 box 0 box 1 等 我这样做的目的是因为我想循环使用它们 其实我发现TextBox array firstTextBox secondTextBox 也有效
  • 获取 WPF 控件的所有附加事件处理程序

    我正在开发一个应用程序 在其中动态分配按钮的事件 现在的问题是 我希望获取按钮单击事件的所有事件 因为我希望删除以前的处理程序 我尝试将事件处理程序设置为 null 如下所示 Button Click null 但是我收到了一个无法分配 n
  • 为什么我的 ASP.NET MVC 应用程序在单个会话中多次触发 Session_Start?

    我们有一个 MVC NET 应用程序在重新启动时遇到致命错误 在 Session Start 事件处理程序中 我们将会话 id 添加到字典中 在 Session End 处理程序中 我们将其删除 考虑以下请求序列 获取主页 mvc 获取ma
  • 未经许可更改内存值

    我有一个二维数组 当我第一次打印数组的数据时 日期打印正确 但其他时候 array last i 的数据从 i 0 到 last 1 显然是一个逻辑错误 但我不明白原因 因为我复制并粘贴了 for 语句 那么 C 更改数据吗 I use g
  • 如何从代码隐藏文件中的asp.net用户控件注册(调用)jQuery函数?

    如何从代码隐藏文件中的asp net用户控件注册 调用 jQuery函数 您可以使用ClientScriptManager RegisterStartupScript http msdn microsoft com en us librar
  • 如何使用 watin 中的 FileUploadDialogHandler 访问文件上传对话框

    我正在使用 IE8 和 watin 并尝试通过我的网页测试上传文件 我不能简单地使用 set 方法设置上传文件 例如 ie FileUpload Find ById someId Set C Desktop image jpg 因为上传文本
  • 批量更新 SQL Server C#

    我有一个 270k 行的数据库 带有主键mid和一个名为value 我有一个包含中值和值的文本文件 现在我想更新表格 以便将每个值分配给正确的中间值 我当前的方法是从 C 读取文本文件 并为我读取的每一行更新表中的一行 必须有更快的方法来做
  • 如何将自定义 JSON 文件添加到 IConfiguration 中?

    我正在使用 asp net Autofac 我正在尝试加载自定义 JSON 配置文件 并基于该文件创建 实例化 IConfiguration 实例 或者至少将我的文件包含到默认情况下构建的 IConfiguration asp net 中
  • 无需安装即可部署 Expression Encoder SDK

    我试图在使用 Microsoft Expression Encoder 3 SDK 时证明一个概念 我正在尝试将 SDK 部署到我的托管 Web 服务器 以了解更多关于它是否有效以及还需要安装什么的信息 我无法在服务器上进行任何操作 以下是
  • 使用 Moq 使用内部构造函数模拟类型

    我正在尝试模拟 Microsoft Sync Framework 中的一个类 它只有一个内部构造函数 当我尝试以下操作时 var fullEnumerationContextMock new Mock
  • 等待线程完成

    private void button1 Click object sender EventArgs e for int i 0 i lt 15 i Thread nova new Thread Method nova Start list
  • Server.MapPath - 给定的物理路径,预期的虚拟路径

    我正在使用这行代码 var files Directory GetFiles Server MapPath E ftproot sales 在文件夹中查找文件 但是我收到错误消息说 给定物理路径但虚拟路径 预期的 我对在 C 中使用 Sys
  • 线程和 fork()。我该如何处理呢? [复制]

    这个问题在这里已经有答案了 可能的重复 多线程程序中的fork https stackoverflow com questions 1235516 fork in multi threaded program 如果我有一个使用 fork 的
  • 使用 GROUP 和 SUM 的 LINQ 查询

    请帮助我了解如何使用带有 GROUP 和 SUM 的 LINQ 进行查询 Query the database IEnumerable
  • 如何正确使用 std::condition_variable?

    我很困惑conditions variables以及如何 安全 使用它们 在我的应用程序中 我有一个创建 gui 线程的类 但是当 gui 是由 gui 线程构造时 主线程需要等待 情况与下面的函数相同 主线程创建互斥体 锁和conditi

随机推荐