【问题标题】:Django Tastypie姜戈美味
【发布时间】:2014-06-02 14:08:11
【问题描述】:

我正在创建一个需要使用身份验证的移动应用程序。我怎样才能实现以下目标:

  1. 我需要创建一个用户。创建用户后,它需要发送Api_client 和一个秘密作为对用户的响应。
  2. 我有一个功能来执行验证。创建用户后,需要调用该函数进行手机验证。
  3. 重要的是,如何阻止使用 for 循环并开始添加用户的用户?

我试过这个:

models.signals.post_save.connect(create_api_key, sender=User)

创建了一个 API 密钥,但在创建用户成功时没有将其作为响应发送。

【问题讨论】:

    标签: django tastypie


    【解决方案1】:

    这是我从你的问题中了解到的:

    1. 您希望您的移动应用程序的任何用户自己注册, 匿名,作为 Django 应用程序的用户。
    2. 此请求必须触发 Tastypie api_key 创建,然后返回。
    3. 您希望防止此请求被发送垃圾邮件。

    我不明白这个:

    “我有一个手机验证功能,创建用户后需要调用手机验证功能。”


    回答我得到的分数:

    1. 请参阅有关 Tastypie 用户注册的 SO 问题 How to create or register User using django-tastypie API programmatically?,尤其是这部分:

      def obj_create(self, bundle, request=None, **kwargs):
          username, password = bundle.data['username'], bundle.data['password']
          try:
              bundle.obj = User.objects.create_user(username, '', password)
          except IntegrityError:
              raise BadRequest('That username already exists')
          return bundle
      

      如需完整的演练,请查看这篇文章http://psjinx.com/programming/2013/06/07/so-you-want-to-create-users-using-djangotastypie/

    2. 您在创建 api_key 方面处于正确的轨道上,除了 您必须告诉 api 实际将其发回。您可以使用常规方式(不过它需要另一个请求):

      即使其可以从 UserResource 访问,如上面链接的文章中所述,具体而言:

      def dehydrate(self, bundle):
          bundle.data['key'] = bundle.obj.api_key.key
      
          try:
              # Don't return `raw_password` in response.
              del bundle.data["raw_password"]
          except KeyError:
              pass
      
          return bundle
      

      如果您想在用户注册后立即发送,请不要忘记将“always_return_data”设置为 True 并将 api_key 添加到响应中

    3. 垃圾邮件/循环注册:

      您应该检查您的服务器在此问题上的能力。例如,假设您使用的是 Nginx:http://wiki.nginx.org/NginxHttpLimitReqModule

      另一个选项可能是使用这个:http://django-ratelimit-backend.readthedocs.org/en/latest/

    希望这会有所帮助!

    问候,

    【讨论】:

    • 经过多日的等待。你引导我成功。非常感谢 :) 非常
    • 如果它与原始问题有关,请随时更新,如果我能回答。否则你最好打开另一个线程:)
    猜你喜欢
    • 2020-08-17
    • 2011-03-29
    • 2011-01-27
    • 2016-01-06
    • 1970-01-01
    • 2010-10-12
    • 1970-01-01
    • 2021-12-03
    • 1970-01-01
    相关资源
    最近更新 更多