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

时间:2015-02-04 19:15:37

标签: mysql sql database authentication coldfusion

我有3个用户角色,ADMIN,GURDIAN,STUDENT。我有GurdianProfile&使用uniqueID链接的StudentProfile表(即GurdianID,StudentID)。这是连接' gurdianLogin'的链接。表格' studentLogin'表。

我的问题是:构建用户登录'的标准方法是什么?表?我应该使用一个表来存储不同类型的用户(即所有3种类型的用户)吗?或者,使用3个不同的表在单个数据库中使用不同类型的用户会更好吗?

最佳做法和策略或建议是什么?

注意:我使用的是ColdFusion,MySQL

2 个答案:

答案 0 :(得分:2)

如果您有一个登录点,我会看到将凭据分布在3个不同的表中作为缺陷,因为如果您添加了第4个用户类型,则必须更新登录系统以合并新的用户类型。所以,我会选择一个用户表,然后如果你需要为你的监护人/学生/管理员档案分开表,请将它们链接到用户表。

_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)

如果三种配置文件类型中的列相同,则可以将其压缩到具有类型列的一个表中。

答案 1 :(得分:0)

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

我对此表进行身份验证。然后,我使用userid链接的其他表来存储联系信息或其他重要数据。

为了限制对网站某些部分的访问,我创建了其他表格,例如user,adimn,superadmin,并存储用户ID。然后,我针对所需的表进行测试,以查看用户标识是否存在,从而确定对页面/区域的访问。