現在、私はレールに移行する必要があるdjangoのシステムを持っています。私はDeviseをレールの認可に使用しています。古いdjangoシステムには、私がレールに移行する必要のある独自のユーザがあります。私が懸念しているのは、ユーザーのパスワードです。 sha1アルゴリズムを使用して暗号化されています。それで、古いユーザーのパスワードと互換性があるように、私はどのように変更することができますか。djangoユーザーをレールに移行
1
A
答えて
2
各ユーザーが独自のランダムな塩を取得します。パスワードが設定されたテーブルが漏洩すると、実際のパスワードを取得するのに役立ちます。
チェックアウトdjango/contrib/auth.models.py
、check_password(raw_password, enc_password)
はあなたのRailsの認証システムに実装するために必要なものです:
def get_hexdigest(algorithm, salt, raw_password):
"""
Returns a string of the hexdigest of the given plaintext password and salt
using the given algorithm ('md5', 'sha1' or 'crypt').
"""
raw_password, salt = smart_str(raw_password), smart_str(salt)
if algorithm == 'crypt':
try:
import crypt
except ImportError:
raise ValueError('"crypt" password algorithm not supported in this environment')
return crypt.crypt(raw_password, salt)
if algorithm == 'md5':
return md5_constructor(salt + raw_password).hexdigest()
elif algorithm == 'sha1':
return sha_constructor(salt + raw_password).hexdigest()
raise ValueError("Got unknown password algorithm type in password.")
def check_password(raw_password, enc_password):
"""
Returns a boolean of whether the raw_password was correct. Handles
encryption formats behind the scenes.
"""
algo, salt, hsh = enc_password.split('$')
return constant_time_compare(hsh, get_hexdigest(algo, salt, raw_password))
1
私は私のユーザモデルで、次の方法があります。
def valid_password?(pwd)
begin
super(pwd)
rescue
my_pwds = self.encrypted_password.split '$'
Digest::SHA1.hexdigest(my_pwds[1] + pwd) == my_pwds[2] rescue false
end
end
これはdefault_passwordを拡張しますか?メソッドを使用して、ユーザーが正しいパスワードを送信したかどうかを確認します。最初に、通常のdevise論理を使ってユーザがチェックされており、それが動作しない場合、Django sha1ロジックが実行されます。この方法ではパスワードもサポートされているので、将来は互換性の問題は発生しません。
関連する問題
- 1. Rubyはレールの移行エラー
- 2. 追加:レールの移行
- 3. レール移行スクリプトVSコンソール
- 4. レール移行風変わり
- 5. cakephpアプリケーションをdjangoに移行
- 6. Djangoシングルテスト移行
- 7. レール3の移行でカスタムヘルパーメソッドにアクセス
- 8. Djangoカスタムユーザーがherokuに移行
- 9. メザニン/ Djangoの1.10移行:データベーステーブル移行
- 10. Djangoの移行と移行が遅い
- 11. Djangoの移行:同じ移行は
- 12. Djangoは移行し
- 13. 前のレールの移行を撤回
- 14. レール移行バージョンの互換性
- 15. PostgreSQLでのレールの移行の問題
- 16. レールの移行ユニークしかし、null値
- 17. レガシーパスワードからレールへの移行devise
- 18. Django - モデルをMySQLデータベースに移行する
- 19. django移行の問題
- 20. Django 1.4への移行
- 21. Djangoプロジェクト:移行のマイグレーション
- 22. Django Allauthの移行エラー
- 23. django southのスキーマの移行
- 24. djangoでの移行エラー
- 25. Djangoの移行エラー137
- 26. Djangoでのデータ移行
- 27. djangoプロダクションでのデータベース移行
- 28. Django-Memsql初期移行エラー
- 29. Django - データ移行+ dbダンプ
- 30. Django 1.3と南の移行