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

当然,你不能那样做。它被散列是有原因的,那就是无法获得明文值。

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

于 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 回答