這裏的模式可能是什麼樣子的例子:
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