我想要的用戶進行身份驗證,但使用authenticate()
,Django的(1.4)返回None
驗證用戶...我試圖手動查詢數據庫:無法使用驗證()
select * from auth_user where password = THE_PASSWORD
和我讓預期的用戶回來。 我試圖使用斷點進行調試,我發現check_password()
函數django.contrib.auth.hashers
正在返回False
hasher.verify()
......但老實說,我不知道爲什麼以及如何深入挖掘問題......任何想法?
ps。我沒有改變我原來的SECRET_KEY
UPDATE:
OMG ......我終於想通了這個問題!實際上,在我的應用程序中,我有一個用戶註冊表單,一旦用戶提交表單,他將收到一封帶有激活鏈接的電子郵件,該鏈接將用戶設置爲「活動」...我想實現「自動登錄「一旦用戶通過鏈接被激活,爲了做到這一點,我試圖使用哈希密碼(這是我可以以編程方式檢索的唯一一個)進行身份驗證,但是django authenticate()期待原始密碼,因爲它是用戶在登錄表單中手動寫入的內容,並且出於安全原因,它不能從存儲在數據庫中的哈希表中開始重新生成... 所以,我從根本上遵循了一個糟糕的做法......在我看來,正確的舉動是向用戶展示一個新的頁面:「恭喜你,你的帳戶已被激活......現在你實際上可以使用這種新形式登錄:)」
這有幫助嗎? http://stackoverflow.com/questions/1947811/authenticate-returns-nothing – 2013-02-09 19:19:04
不幸的是,它並沒有,因爲我已經在調用save()之前使用set_password()方法存儲哈希密碼:P – daveoncode 2013-02-09 20:06:58