我需要创建一个多级应用程序,其中用户详细信息存储在名为 Users 的 mysql 表中。
现在我需要允许用户创建子用户或客户帐户。所以会有管理员、用户和客户帐户可以登录网站。
我的问题是:我如何对管理员和他自己创建的子用户和客户端进行分组?
我应该使用非管理员详细信息创建第二个表吗?或者最好让客户端和用户在同一个管理员表中,然后在表上创建自我关系?
我需要创建一个多级应用程序,其中用户详细信息存储在名为 Users 的 mysql 表中。
现在我需要允许用户创建子用户或客户帐户。所以会有管理员、用户和客户帐户可以登录网站。
我的问题是:我如何对管理员和他自己创建的子用户和客户端进行分组?
我应该使用非管理员详细信息创建第二个表吗?或者最好让客户端和用户在同一个管理员表中,然后在表上创建自我关系?
这或多或少是我过去的做法:
actions
id unsigned int(P)
description varchar(50) // Delete users, Edit something, etc.
roles
id unsigned int(P)
site_account_id unsigned int(F site_accounts.id)
description varchar(50) // Client Admin, Client User, etc.
roles_actions
id unsigned int(P)
role_id unsigned int(F roles.id)
action_id unsigned int(F actions.id)
site_accounts
id unsigned int(P)
name varchar(50) // Client 1, Client 2, etc.
users
id unsigned int(P)
site_account_id unsigned int(F site_accounts.id)
username varchar(32)
password varbinary(255)
email varchar(255)
users_roles
id unsigned int(P)
user_id unsigned int(F users.id)
role_id unsigned int(F roles.id)
您将为role
“客户管理员”创建一个角色,该角色将拥有客户可能拥有的所有权限。然后,您将site account
在注册新客户时创建一个,并为他们分配“客户管理员”的角色。
您需要编写代码让他们创建自己的roles
(将与他们的 site_account_id 相关联),并让他们将其中的任何一个分配actions
给每个新的roles
. 这使他们能够完全控制他们想要的角色以及每个角色拥有的权限。
您还需要编写允许他们添加/更新/删除用户的代码(同样,这些用户中的每一个都将与他们的 site_account_id 相关联)。
这使您可以轻松查看每个客户属于哪些角色/用户,并且当您丢失一个时,您只需删除他们的site_accounts
记录即可删除他们的所有数据。
这只是一个粗略的例子。像这样的东西还有很多,所以你必须弄清楚你想要它有多细。
将所有帐户保留在同一个表中,并添加一parentAccount
列来存储帐户父级的主键。