Django:set_password不是哈希密码吗?

23049581029

我在Django中制作了自定义用户注册表单/视图,以便可以通过其他模型添加其他用户属性。我已经使用set_password将新创建的用户的密码设置为在表单中输入的密码,但是我发现保存的密码没有被散列。

形式:

class UserForm(forms.ModelForm):
password = forms.CharField(widget=forms.PasswordInput())
class Meta:
    model = User
    fields = ('username', 'email', 'password')


class StudentForm(forms.ModelForm):
    class Meta:
        model = Student
        fields = ('theclass',)
        widgets = {
            'theclass': forms.CheckboxSelectMultiple(),
        }

class TeacherForm(forms.ModelForm):
    class Meta:
        model = Teacher
        fields = ('theclass',)
        widgets = {
        'theclass': forms.CheckboxSelectMultiple(),
        }

看法:

def register_student(request):
context = RequestContext(request)
registered = False
if request.method == 'POST':
    user_form = UserForm(data=request.POST)
    student_form = StudentForm(data = request.POST)

    if user_form.is_valid() and student_form.is_valid():
        user = user_form.save()
        user.set_password(user.password)

        user.save

        student = student_form.save(commit = False)
        student.user = user
        student.save()
        registered = True
else:
    user_form = UserForm()
    student_form = StudentForm()
return render_to_response('classapp/register_student.html', {'user_form': user_form, 'student_form': student_form, 'registered': registered}, context)

def register_teacher(request):
    context = RequestContext(request)
    registered = False
    if request.method == 'POST':
        user_form = UserForm(data=request.POST)
        teacher_form = TeacherForm(data = request.POST)
    if user_form.is_valid() and teacher_form.is_valid():

        user = user_form.save()

        user.set_password(user.password)

        user.save

        teacher = teacher_form.save(commit = False)
        teacher.user = user
        teacher.save()
        registered = True
else:
    user_form = UserForm()
    teacher_form = TeacherForm()
return render_to_response('classapp/register_teacher.html', {'user_form': user_form, 'teacher_form': teacher_form, 'registered': registered}, context)

当我通过此表单注册用户时,登录名无效。我在Admin上检查了用户信息,发现密码字段显示:无效的密码格式或未知的哈希算法。我还同步了数据库并打开了外壳程序,并手动检索了使用我的注册表单创建的用户对象,发现用户密码没有被散列,如下所示:

>>> from django.contrib.auth.models import User
>>> user = User.objects.get(username = "username")
>>> user.password
u'password'
>>> user = User.objects.get(username = "superuser")
>>> user.password
u****hashed password****

使用Admin创建的用户的密码会被哈希处理,但我的自定义表格不会进行哈希处理。文档说set_password(raw_password)自动处理哈希处理。

木霉

set_password仅创建哈希密码;它不会将值保存在数据库中。调用save()以实际保存它。


您认为应该是

user.save()

线下

user.set_password(user.password)

您没有写括号(括号)。这就是为什么save在对密码进行哈希处理后未调用method的原因

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

set_password() 未设置 DRF 密码

来自分类Dev

Django AttributeError:“用户”对象没有属性“ set_password”,但未覆盖用户

来自分类Dev

Bcrypt在哈希密码方面不是那么安全吗?

来自分类Dev

为什么django的默认身份验证后端在引发UserModel.DoesNotExist异常后会调用set_password?

来自分类Dev

Python:名称“ set_password”未定义

来自分类Dev

password_verify-密码哈希

来自分类Dev

使用哈希密码而不是原始密码在django中对功能进行身份验证

来自分类Dev

PHP password_hash():密码哈希在系统之间可移植吗?

来自分类Dev

PHP password_hash():密码哈希在系统之间可移植吗?

来自分类Dev

password_verify哈希与密码不匹配

来自分类Dev

password_verify哈希与密码不匹配

来自分类Dev

可以将简单的MD5哈希转换为django密码吗?

来自分类Dev

在Django Admin中创建用户时,它不会对密码进行哈希处理吗?

来自分类Dev

从shell创建用户时的django哈希密码

来自分类Dev

Django-如何保存我的哈希密码

来自分类Dev

从shell创建用户时的django哈希密码

来自分类Dev

检查Flask中Django创建的密码哈希

来自分类Dev

使用 django-rest-framework 的密码哈希?

来自分类常见问题

如何使用PHP的password_hash哈希和验证密码

来自分类Dev

password.js难以获得哈希密码

来自分类Dev

安装工具密码的哈希值不是恒定的

来自分类Dev

使用哈希而不是登录密码进行身份验证?

来自分类Dev

加密密码合法吗?不使用任何哈希方法

来自分类Dev

PHP不会将哈希密码写入文件吗?

来自分类Dev

django密码重置password_reset_confirm

来自分类Dev

在Oracle JDBC客户端中指定密码哈希而不是清除密码

来自分类Dev

使用令牌而不是密码访问Django Admin

来自分类Dev

django自定义用户模型密码未哈希

来自分类Dev

Django自定义用户密码未哈希

Related 相关文章

  1. 1

    set_password() 未设置 DRF 密码

  2. 2

    Django AttributeError:“用户”对象没有属性“ set_password”,但未覆盖用户

  3. 3

    Bcrypt在哈希密码方面不是那么安全吗?

  4. 4

    为什么django的默认身份验证后端在引发UserModel.DoesNotExist异常后会调用set_password?

  5. 5

    Python:名称“ set_password”未定义

  6. 6

    password_verify-密码哈希

  7. 7

    使用哈希密码而不是原始密码在django中对功能进行身份验证

  8. 8

    PHP password_hash():密码哈希在系统之间可移植吗?

  9. 9

    PHP password_hash():密码哈希在系统之间可移植吗?

  10. 10

    password_verify哈希与密码不匹配

  11. 11

    password_verify哈希与密码不匹配

  12. 12

    可以将简单的MD5哈希转换为django密码吗?

  13. 13

    在Django Admin中创建用户时,它不会对密码进行哈希处理吗?

  14. 14

    从shell创建用户时的django哈希密码

  15. 15

    Django-如何保存我的哈希密码

  16. 16

    从shell创建用户时的django哈希密码

  17. 17

    检查Flask中Django创建的密码哈希

  18. 18

    使用 django-rest-framework 的密码哈希?

  19. 19

    如何使用PHP的password_hash哈希和验证密码

  20. 20

    password.js难以获得哈希密码

  21. 21

    安装工具密码的哈希值不是恒定的

  22. 22

    使用哈希而不是登录密码进行身份验证?

  23. 23

    加密密码合法吗?不使用任何哈希方法

  24. 24

    PHP不会将哈希密码写入文件吗?

  25. 25

    django密码重置password_reset_confirm

  26. 26

    在Oracle JDBC客户端中指定密码哈希而不是清除密码

  27. 27

    使用令牌而不是密码访问Django Admin

  28. 28

    django自定义用户模型密码未哈希

  29. 29

    Django自定义用户密码未哈希

热门标签

归档