在数据库中存储登录详细信息

Storing Login details in a Database

我有 3 个用户角色,ADMIN、GURDIAN、STUDENT。我使用 uniqueID(即 GurdianID、StudentID)编辑了 GurdianProfile 和 StudentProfile tables link。即连接 'gurdianLogin' table 和 'studentLogin' table 的 link。

我的问题是:构建 'User Login' table 的标准方法是什么?我应该使用一个 table 来存储不同类型的用户(即所有 3 种类型的用户)吗?还是使用 3 个不同的 table 来在单个数据库上使用不同类型的用户更好?

最佳实践和策略或建议是什么?

注意:我使用的是 ColdFusion,MySQL

如果您只有一个登录点,我认为将凭据分布在 3 个不同的 table 中是一个缺陷,因为如果您添加了第四种用户类型,那么您将不得不更新您的登录系统合并新的用户类型。因此,我会选择一个用户 table,然后如果您的 guardian/student/admin 配置文件需要单独的 table,请将它们 link 给用户 table.

_User_
id
email
username
password (this better not store the password in plain text..)

_GuardianProfile_
id
userid (links to user table)
(GuardianProfile fields)

_StudentProfile_
id
userid (links to user table)
(StudentProfile fields)

_AdminProfile_
id
userid (links to user table)
(AdminProfile fields)

如果三种配置文件类型中的列相同,将其压缩为一个 table 类型列可能有意义。

我使用一个 table 来存储登录详细信息 - 用户 ID(主键)、salt、密码、用户名、电子邮件地址。

我对此进行验证 table。然后,我使用由用户 ID 链接的其他 table 来存储联系信息或其他重要数据。

为了限制对站点某些部分的访问,我创建了其他 table,例如用户、adimn、superadmin 并存储了用户 ID。然后我根据所需的 table 进行测试以查看用户标识是否存在,从而确定对 page/area.

的访问权限