在关系数据库上实现白名单

时间:2015-06-19 20:11:12

标签: mysql relational-database

我的网络系统不断增长,约有30,000名用户。

对于大多数用户而言,Web系统上有一些禁用的操作。但是一些受信任的客户可能有权使用它们。

我已经有一个对象来处理每个用户的权限(get / set)。这些权限在每个用户数据库条目中表示为整数字段(每个位都是权限)。

在我的第一个选项中,我将在我的权限管理器对象上为我想要实现的每个白名单添加一个新的权限字段。然后,当我想知道当前用户是否在白名单中时,我会调用此对象并检查该权限。

但是如果向管理员显示白名单(显示,编辑,删除等),那么我将不得不创建一个权限管理器对象30,000次并测试每个权限。我觉得这很浪费。

我的第二个选择是创建一个新表whitelists,每行将是一个不同的白名单,然后在TEXT字段中,我会写一个逗号分隔的用户ID列表。问题:TEXT VARCHAR或任何类型的文字字段都有字符数限制。

我认为最有效的方式是第二种选择,因为我不太可能在白名单中放置超过100个用户。

但是有更好的实施方式吗?

也许我可以在我的权限管理器对象中添加一个新方法,该方法只使用一个查询来构建所选权限的列表。

0 个答案:

没有答案