【问题标题】:How to make data available only to specific user in web app?如何使数据仅对 Web 应用程序中的特定用户可用?
【发布时间】:2020-01-06 22:57:39
【问题描述】:

这似乎应该是经常实现的东西,但我很难找到信息。

我有 Net Core MVC 应用程序,它只显示来自 DB(main.db) 的条目。我希望注册用户能够自己编辑/删除/任何这些条目。 下次用户登录时,他会看到更改的数据。当然,其他用户会看到 main.db 中默认的、未更改的条目

In documentation when one changes data, it changes for everyone

实现这样的事情的标准方法是什么?以某种方式将“main.db”与“identity_service.db”中的 AspNetUsers 表映射?

【问题讨论】:

  • 请发布您当前的代码是什么样的。

标签: asp.net-mvc authentication asp.net-core architecture


【解决方案1】:

您所说的是授权,这是前端的事情。您不会也不应该限制每个用户对数据库的访问。相反,您只有一个 DB 用户,这是您的应用程序本身用来获取数据的用户。编辑、删除等功能由应用程序控制,具体取决于用户是否“授权”执行该特定操作,这通常通过角色或声明进行控制。

换句话说,您需要设置EditDelete 等角色,然后根据需要将这些角色分配给用户:即应该能够编辑的用户,获取@987654324 @角色分配。

最后,您将拥有一个或多个实际呈现视图以供编辑的操作:用户与 HTML 页面上的某个表单交互以实际进行编辑。对于这些操作,您可以通过 Authorize 属性保护它们并指定允许的角色:

[Authorize(Roles = "Edit")]
public IActionResult MyEditAction()

如果用户没有适当的角色,那么他们将被拒绝访问该视图,因此无法进行必要的交互来影响“编辑”。

这是一个非常基本的概述。您可能需要执行其他类型的授权:基于资源(AKA 行级)、基于策略等。有关更多信息,请咨询documentation

【讨论】:

  • 但是当授权用户之一编辑数据时,这些编辑会发生在所有用户身上。我的问题是如何实现他们从 db 中看到不同的条目,具体取决于他们删除/添加的内容
  • 他们必须拥有这些实体的自己的版本(副本)。在这种情况下,您正在查看基于资源的授权。
猜你喜欢
  • 2018-07-15
  • 1970-01-01
  • 2021-05-04
  • 2011-04-06
  • 2023-04-04
  • 1970-01-01
  • 2021-11-18
  • 2012-11-03
  • 1970-01-01
相关资源
最近更新 更多