加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – MySQL数据库:限制用户访问他们创建的数据

发布时间:2020-12-15 22:09:29 所属栏目:百科 来源:网络整理
导读:使用C#和 MySQL,是否可以创建单独的用户帐户来访问数据库,并且只允许用户查看/修改/删除自己的数据? 解决方法 在SQL中,您可以将用户或用户组的权限授予表和视图上的所有SIDU访问类型(选择,插入,删除,更新). 如果您在行级别讨论更精细的粒度,我认为您需要将
使用C#和 MySQL,是否可以创建单独的用户帐户来访问数据库,并且只允许用户查看/修改/删除自己的数据?

解决方法

在SQL中,您可以将用户或用户组的权限授予表和视图上的所有SIDU访问类型(选择,插入,删除,更新).

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

另一种方法是创建一个或多个表,其中包含受限制或非受限制记录或内容的密钥,如项目或区域.

如果你有一个精心设计的所有权概念,那么第一个解决方案就不会非常难以编码.特权,现在和以后都足够灵活.

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

规划用户组,因为一个用户通常需要做另一个用户的工作,至少部分地…

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

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

更新

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

每个用户使用一个单独的DB的文章更容易编写,因为在登录之后,每个用户的所有内容都是相同的,即不需要向SQL注入任何内容.

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

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读