这里的模式可能是什么样子的例子:
user
user_id (PK)
username (char)
password (char)
security_question_id (FK)
security_answer (char)
email_address (char)
security_question
security_question_id (PK)
question (char)
keyword
keyword_id (PK)
keyword (char)
user_keyword
user_keyword_id (PK)
user_id (FK)
keyword_id (FK)
url
url_id (PK)
user_id (FK)
url (char)
PK = Primary Key
FK = Foreign Key
char = varchar of some max length that you define
假设:
- 有可供选择的安全问题标准列表。
- 很多用户可能有相同的关键字,所以他们被放在他们自己的表中。
- URLs更独特,所以只需将url和user_id存储在一起。如果你愿意,你可以改变这个关键字使用的共享模式。
- 没有可以为空,所有字段都是必需的。
正如我所评论的,我建议使用密码(带盐)。不需要恢复,他们可以重置密码。我模仿Django的密码风格过去:
sha1$8ac10f$a94a8fe5ccb19ba61c4c0873d391e987982fbbd3
这就是:散列法,盐和密码哈希,由$字符分隔。你可以生成一个随机字符串作为盐。在散列之前将其添加到密码。存储密码字段中显示的字符串。要测试密码的正确性,请提取这3个字段,将salt附加到用户输入的密码,应用散列并与数据库中的散列(第3个字段)进行比较。如果它们匹配,则密码是正确的。
我会亲自使用SQLAlchemy。
请哈希,不要加密密码,并在此哈希。 – icktoofay 2010-07-31 03:20:58
使用MD5?我听说这很好,但不可解密。我需要能够再次读取原始数据,以获得密码恢复功能。 – 2010-07-31 03:23:18
您可以通过http://www.google.com/search?q=python+mysql+tutorial找到大量优秀的Python + MySQL教程 - 您是否看过其中的一些,以及缺少什么你去吗? – 2010-07-31 03:23:59