gpt4 book ai didi

c# - MySQL 数据库 : Limit user access to data they created

转载 作者:可可西里 更新时间:2023-11-01 07:39:34 26 4
gpt4 key购买 nike

使用C#和MySQL,是否可以创建单独的用户账户来访问数据库,并且只允许用户查看/修改/删除自己的数据?

最佳答案

在 SQL 中,您可以授予用户或用户组对表和 View 的所有 SIDU 访问类型(选择、插入、删除、更新)的权限。

如果您在行级别谈论更精细的粒度,我认为您需要将此信息存储在某个地方;最直接的方法是向需要限制的每个表添加诸如所有者字段和/或权限字段之类的内容。

另一种方法是创建一个或多个表,其中包含受限或非受限记录或内容(如项目或区域)的键。

第一个解决方案不会很难编写代码,前提是您拥有精心设计的所有权和特权概念,并且在现在和以后都足够灵活。

您将添加一个访问逻辑层,它会添加一个额外的 where 子句,在最简单的情况下,例如:..AND WHERE table.ownerID = @ownerid 或类似的每个 SELECT。对于每个 INSERT,它都会用当前用户 ID 或组 ID 和/或他当前的访问权限填充该字段。

为用户组制定计划,因为一个用户经常需要做另一个用户的工作,至少是部分工作......

额外的权限表需要更好的规划..

还要考虑管理这些数据的工具和功能。

更新

既然现在很清楚,您想要设置基于 Web 的数据访问,您可以为每个用户创建单独的表,并使用用户名或其哈希或加密版本,用作每个表的前缀;或者,更常见的是,您可以为每个用户设置一个单独的数据库,同样,数据库名称以某种方式从用户名或用户 ID 派生。

每个用户都有一个单独的数据库的版本更容易编写,因为登录后,每个用户的一切都将相同,即不需要在 SQL 中注入(inject)任何东西。

唯一可能的考虑可能来自提供商的技术或金钱限制。一些包只允许少量的数据库。在这种情况下,表前缀方法是下一个最可能的解决方案。

因此您期望的用户数量也可能是一个决定因素..

关于c# - MySQL 数据库 : Limit user access to data they created,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26514938/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com