1

フォーム.py

class UserRegisterForm(forms.ModelForm):
    password = forms.CharField(widget=forms.PasswordInput(render_value=True))
    class Meta:
        model = User

フォーム インスタンスを表示し、インスタンスを更新するための views.py があります。

フォームデータを編集すると、他のすべてのフィールドに正しい値が表示され、パスワードフィールドには、入力されたパスワードではなく、データベースからハッシュされた値全体が表示されます。

データベースのハッシュ値ではなく、入力したパスワードを表示する方法がわかりません。

4

2 に答える 2

3

もちろん、それはできません。これは、平文の値を取得できないようにするという理由でハッシュ化されています。

ただし、更新時に現在のパスワードを表示する Web サイトやアプリケーションはありません。通常、確認のためにパスワードを自分で入力してから、新しいパスワードを 2 回入力する必要があります。

于 2013-09-18T11:55:57.053 に答える
0

セキュリティについて覚えておいてください。

#app/hashers.py

from django.contrib.auth.hashers import BasePasswordHasher
from django.utils.datastructures import SortedDict

class DummyPasswordHasher(BasePasswordHasher):
    algorithm = "dummy"

    def encode(self, password, salt):
        return "dummy$%s" % (password)

    def verify(self, password, encoded):
        algorithm, hash = encoded.split('$', 2)
        return hash == password

    def safe_summary(self, encoded):
        algorithm, hash = encoded.split('$', 2)
        return SortedDict([
            ('algorithm', algorithm),
            ('password', hash),
        ])

#settings.py

PASSWORD_HASHERS = (
    'app.hashers.DummyPasswordHasher',
)

PREFERRED_HASHER = 'app.hashers.DummyPasswordHasher'

編集スペルミスを修正しました

于 2013-09-18T15:46:11.167 に答える