1

我需要创建一个多级应用程序,其中用户详细信息存储在名为 Users 的 mysql 表中。

现在我需要允许用户创建子用户或客户帐户。所以会有管理员、用户和客户帐户可以登录网站。

我的问题是:我如何对管理员和他自己创建的子用户和客户端进行分组?

我应该使用非管理员详细信息创建第二个表吗?或者最好让客户端和用户在同一个管理员表中,然后在表上创建自我关系?

4

2 回答 2

4

这或多或少是我过去的做法:

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记录即可删除他们的所有数据。

这只是一个粗略的例子。像这样的东西还有很多,所以你必须弄清楚你想要它有多细。

于 2013-06-25T19:05:55.230 回答
1

将所有帐户保留在同一个表中,并添加一parentAccount列来存储帐户父级的主键。

于 2013-06-25T18:55:15.430 回答