2012-09-14 60 views
2

我已經使用django 1.4。創建新用戶時,它會保存簡單的密碼。有沒有一個設置,所以當保存一個用戶,密碼保存加密?爲什麼Django不保存加密密碼?

編輯

我只需使用內置的管理功能來添加用戶。沒有什麼奇特的 - 只是內置的驗證模塊和在管理中自動創建的用戶表單。


更多編輯

我需要一些自定義字段,所以我已經使用了自定義類:

class UserForm(forms.ModelForm): 
    class Meta: 
     model = User 
    ... 
    ... 

回答

10

創建用戶時,應使用create_user管理方法。

如果您正在創建自定義表單,請將UserCreationFormUserChangeForm中的一個子類化。如果您正在創建自定義ModelAdmin,則創建子類UserAdmin。否則,你必須自己重新實現密碼哈希功能。

請注意密碼將被散列,而不是加密(即您不能解密它)。

+0

但不django管理員應該這樣做默認情況下。即在創建新用戶時散列密碼?我在admin中使用默認表單創建用戶 – wasimbhalli

+1

默認情況下,用戶模型的Django管理員模型表單默認進行哈希處理。你用'forms.ModelForm'的子類替換了這些,並且失去了這個功能。 – Alasdair