ユーザーを認証しようとしていますがauthenticate()
、django (1.4) を使用すると返されますNone
...手動でデータベースにクエリを実行しようとしました:
select * from auth_user where password = THE_PASSWORD
そして、期待されるユーザーを取り戻します。ブレークポイントを使用してデバッグしようとしたところ、check_password()
関数 inがindjango.contrib.auth.hashers
に戻っていることがわかりました...しかし、正直なところ、問題をさらに掘り下げる理由と方法がわかりません...何か考えはありますか?False
hasher.verify()
ps。オリジナルを修正していないSECRET_KEY
アップデート:
OMG...やっと問題がわかりました!私のアプリケーションの実際には、ユーザーサインアップ用のフォームがあります。ユーザーがそのフォームを送信すると、ユーザーを「アクティブ」に設定するアクティベーションリンクが記載された電子メールが届きます...「自動ログインを実装したいと思います。 「ユーザーがリンクを介してアクティブ化されたら、これを行うために、ハッシュ化されたパスワード (プログラムで取得できる唯一のもの) を使用して彼を認証しようとしましたが、django authenticate() は生のパスワードを期待しています。ユーザーがログインフォームに手動で書き込むものであり、セキュリティ上の理由から、データベースに保存されているハッシュ化されたものから再生成することはできません...だから、私は基本的に悪い習慣に従っていました...正しい動きは、代わりにユーザーに次のような新しいページを提示することです。