1

我不确定这是否是提出这个问题的最佳方式。

我已经建立了一个 facebook 克隆。

现在已经到了我希望人们能够创建页面/公司简介的地步。

所以我希望许多用户能够

A)管理这些页面(简单,只需授权用户对页面)

B)充当这些页面,就好像它们是普通用户帐户一样(在页面上发布帖子,并在整个应用程序中进行操作,就好像它们是普通用户一样

现在要做到这一点,我可以

i) 实际上创建一个不同类型的新用户。当普通用户想要充当 PAGE/Company 时,我实际上对他们进行了身份验证/授权,并将他们的登录帐户实际切换到第二个用户。当以该用户身份登录时,他们可以使用相同的方法切换回其他用户类型。我实际上非常喜欢这个想法,因为它意味着代码更改很少,并且一切都应该正常工作。

问题 - Cookie?多个用户同时登录同一个帐户?我猜这是我的问题以及我如何构建我的一般应用程序/cookie 方法

ii) 我可以在数据库中创建新类型,即页面/公司,并在每个我有用户 ID(帖子、消息、照片、图像等)的地方添加一个页面 ID 和公司 ID。然后,当作为页面或公司工作时,我可以记录正在交互的页面/公司。

与选项 a) 中理论上干净的想法相比,这将导致相当多的代码更改,并且感觉也很糟糕。

但是,我可能错过了一些绝对巨大的安全漏洞或选项 A) 是一个坏主意的其他原因。

有什么想法吗?

4

1 回答 1

1

看来你的情况过于复杂了。您似乎想要执行以下操作:

  • 创建一个User模型,它是您唯一能够登录的模型
  • 添加“其他帐户类型”作为该User模型中添加的身份验证级别

这类似于为roles您的User模型添加不同的内容。

  • UserA 可以拥有一个角色,允许他们比 UserB 做更多的事情
  • 这些角色可以根据需要来来去去

你的方法似乎走在了正确的轨道上iKISS浮现在脑海中。

更新 - 根据您的评论:

我会回到绘图板上你想如何做到这一点 - 明显的结构太不干净了,我们需要在这里更有创意。

如果我们知道有关您的确切结构的更多信息,我们将能够提供更多帮助,但这很乏味。话虽如此,导致这些问题的解决方案本身就很复杂。

我会尽力而为——当我想到您的用户需求时,我会想到:

  • 感觉类似于教室环境。您有一群用户(学生、教师、管理人员)可以访问同一区域(教室),并且其中有几个区域是相似的(不同的教室)。
  • 如果它类似于教室设置,您将拥有具有以下角色的用户:
    • 管理员可以在任何他们想要的地方访问任何东西。
    • 教师可以访问他们明确教授的任何教室。
      • 作为一名教师意味着他们可以在课堂上做的事情比学生多。
    • 学生的权限要有限得多,基本上只能上课、上交作业和查看成绩。他们唯一能控制的是他们出现与否的天气。

起初,上述情况可能听起来令人费解——如何为这种结构设置权限方案?

简单的:

  • 你有三个角色:Admin Teacher Student

  • (我将过度简化)您放弃[Authorize(Roles = "Admin")]需要用户登录的每一个控制器操作 - 因为他们可以做任何他们想做的事情。

  • 您允许Teachers 几乎完全控制与他们教授的课程相关的任何操作:if User.IsInRole("Teacher") && User.Name == classroom.Teacher

  • 您允许Students 对他们可以做什么有更大的限制,并进一步限制他们的用户是否真的在教室里:(if User.IsInRole("Student") && User.Name.IsInList().List<Enrollments>EnrollmentListForCurrentClassroom非常伪代码)

您只有三个角色,但您可以通过角色以外的方式限制对数据库各个部分的访问 - 您可以通过天气限制访问 用户还被添加到班级的注册学生列表、教师列表中教一堂课(通常每个班只有一位老师……)等。

希望采用与上述类似的方法将有助于简化您的情况。

于 2012-07-22T02:08:34.380 回答