【问题标题】:When using django rest frame work modlerserializers passwords don't get hashed使用 django rest 框架模型序列化程序时,密码不会被散列
【发布时间】:2014-06-25 07:02:01
【问题描述】:

如果我使用 django-rest-framework 中的 ModelSerializer 类,我如何确保对密码进行哈希处理?因为调用 modelSerializer.save() 不会散列名为“密码”的字段?有没有办法指定一个字段需要在“Meta:”中进行散列?

【问题讨论】:

    标签: django django-rest-framework


    【解决方案1】:

    要进行这种转换,您可以做两件事:

    • 在验证时使用validate_xxx 更改字段值(参见docs
    • 如果您多次使用这种行为,请创建custom field 定义。

    如果您谈论的是 Django 用户模型,您可以在调用 User.set_password 的序列化程序上定义一个 pre_save 方法。

    【讨论】:

    • 我认为这是一个更清洁的解决方案
    【解决方案2】:

    我最终修改了未序列化的请求对象并在序列化之前对密码进行哈希处理,django 使用 make_password 使这变得容易

        def prehash(self, request):            
            password = request.DATA['password']
            password = make_password(password)
            request = request.DATA
            request = request.copy()
            request.update({'password':password})
            return request
    

    【讨论】:

      猜你喜欢
      • 2023-03-10
      • 2019-10-26
      • 1970-01-01
      • 1970-01-01
      • 2016-04-07
      • 2012-11-16
      • 1970-01-01
      • 2014-07-26
      • 2017-06-25
      相关资源
      最近更新 更多