2012-05-16 104 views
7

我們如何檢索用戶的密碼?如何在django中檢索密碼

u = User.objects.get(username__exact=username) 
print u.password 

顯示sha1$f0971$441cac8f604d49869e33ca125a76253a02fef64e

有沒有找到這個編碼字符串密碼的功能?

+0

我需要通過電子郵件將密碼,當用戶點擊忘記密碼的鏈接。但由於這是不可能的解決方法是什麼? – John

+2

使用內置功能重置密碼 - 即創建一個新的,而不是通過電子郵件發送的原件。 –

+0

我見過很多提供此功能的網站。可悲的是,Django沒有提供解決方法 – John

回答

17

不,這是不可能的,通過設計。但不管怎樣,永遠都不需要這樣做。

2

沒有。而且不應該有。作爲安全性的一部分,密碼是通過一個單向函數傳遞被保存之前他們,讓他們沒有陶醉如果數據庫被攻破

你可以做什麼是請換一個用戶的密碼,您知道。這是怎麼了(好)網站的「忘記密碼」功能的工作:他們給你一個新的隨機密碼,不是舊的,因爲他們(應該)訪問它

7

由於安全限制密碼哈希方法是一種方法。您將需要重置該用戶密碼。

嘗試使用set_password(raw_password)方法給用戶一個新的密碼。請記住調用save()方法以確保將更改保存到數據庫。

u = User.objects.get(username__exact=username) 
u.set_password(raw_password) 
u.save() 
2

不,該字段包含密碼的鹽漬散列。從字符串我們知道它是SHA1函數。如果你有密碼,你將能夠產生相同的散列值作爲足跡。出於安全原因,應該有現在的方式在一個經濟的手段恢復密碼(你仍然可以蠻力,但需要很長一段時間),