密码字段,显示表单值更新时的散列值

时间:2013-09-18 11:51:54

标签: python django python-2.7 django-models django-forms

forms.py

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

我有views.py来显示表单实例并更新实例。

在编辑表单数据时,所有其他字段都显示正确的值,密码字段显示数据库中的整个散列值,而不是输入的密码。

我不知道如何在数据库中显示输入的密码而不是散列值。

2 个答案:

答案 0 :(得分:3)

当然,你不能这样做。这是因为某种原因,这使得无法获得明确的文本值。

您必须注意到,在您更新时,任何网站或应用程序都不会显示您当前的密码:您通常必须自己输入以进行验证,然后输入两次新密码。

答案 1 :(得分: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'

编辑我已更正拼写错误