[英]Android - how to store facebook login & normal user login data in database?
[英]How to properly store login info in database
我想设计一个具有以下功能的身份验证数据库:
因此,我设计了以下表格(主键以粗体显示):
认证信息
UID | 密码盐| Is_logged_in | 电子邮件已验证| 电话验证
用户信息
UID | 名| 姓氏| 电邮| 位置| 注册日期| 电话号码| 出生日期| isEnabled
安全Q / A
UID | SID | 安全问题| 安全答案
Passed_login_info
UID | 时间 | 位置| IP | 设备
将它们更改为3NF后,得到以下表格(同样,主键以粗体显示):
认证信息
UID | 密码盐| Is_logged_in
用户信息
UID | 名| 姓氏| Email_id | 位置| 注册日期| Phone_id | 出生日期
安全Q / A
UID | SID | 安全问题| 安全答案
Passed_login_info
UID | PID | 时间| 位置| IP | 设备
令牌验证
Verification_id | UID | TempToken | Expire_Time
这是一个好的设计吗? 我有任何错误吗?
由于我不熟悉该应用程序的预期用途,因此无法确定以下建议是否适用于这种情况,但是无论如何,这里有一些建议:
关于Token_Verification
表,我相信只需要三个字段: UID
, TempToken
, Expire_Time
。 我看不到需要Verification_id
。
Authentication_Info
表不需要Is_logged_in
字段,因为我们可以通过在Token_Verification
表中搜索有效的TempToken
来检查UID
是否已登录。 因此,可以删除该字段。
Authentication_Info
表中的Password_salt
字段应分为Salt
和SaltedHash_Password
。 当密码到达验证时,您将必须加盐,对(salt + password)
进行哈希处理,然后与存储的值进行比较。
在SecurityQ/A
表中,应将SecurityAnswer
视为密码。 每个安全性答案应与唯一的随机盐一起存储。 因此,该表的字段应为UID
, SID
, SecurityQuestion
, Salt
, SaltedHash_SecurityAnswer
。
我上面没有提到的表对我来说很好:)
(\(\
).. \
\Y_, '-.
) '.
| \/ \
\\ |\_ |_
((_/(__/_,'.
(,----'
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.