如何通过django tastypie使用api密钥身份验证?

如何通过django tastypie使用api密钥身份验证?,django,authentication,tastypie,Django,Authentication,Tastypie,从tastypie教程: from django.contrib.auth.models import User from django.db import models from tastypie.models import create_api_key models.signals.post_save.connect(create_api_key, sender=User) 教程说: “Tastypie包含一个信号函数,可用于自动创建ApiKey对象。” 我不知道将此代码放在哪里,请帮助

从tastypie教程:

from django.contrib.auth.models import User
from django.db import models
from tastypie.models import create_api_key

models.signals.post_save.connect(create_api_key, sender=User)
教程说:

“Tastypie包含一个信号函数,可用于自动创建ApiKey对象。”


我不知道将此代码放在哪里,请帮助。

您可以将此代码放在相关应用程序的
models.py
文件中。或者,您也可以将其放在应用程序目录下的
signals.py
中——记住也要在应用程序的
\uuuu init\uuuu.py
文件中导入信号

此代码在这里的作用是,通过使用,每次创建
用户
,将自动为此用户创建HMAC API密钥:


我将此代码放在api.py中。成功了!!当我创建新用户时,它会自动生成api_密钥。我知道这一点,因为我是通过管理员页面做到的。但我不知道如何将apikey发送回用户。第二个问题是“是否正确?当用户从此应用程序注销时,应删除客户端中的apikey。并且在登录inIt时会再次获得相同的API密钥,这取决于您的使用情况——但我想不出有多少用例需要在用户每次注销时重新生成API密钥。您可能正在考虑。当用户登录时,将发生的过程是通过与用户模型中的属性进行比较来检查用户和密码之间的兼容性。然后把钥匙还给他。这句话是真的吗?我强烈怀疑你想的是而不是。哦,我误解了api密钥的概念。谢谢你的建议。实际上,Api键是用来通过该键来识别用户的>好吧,现在已经生成了该键,但是用户如何检索该键呢?他会永久保存那个密钥吗?糟糕的解决方案,代码中没有导入,而且,信号不好用,您可以替代save方法
class ApiKey(models.Model):
    user = models.OneToOneField(User, related_name='api_key')
    key = models.CharField(max_length=256, blank=True, default='')
    created = models.DateTimeField(default=datetime.datetime.now)

    def __unicode__(self):
        return u"%s for %s" % (self.key, self.user)

    def save(self, *args, **kwargs):
        if not self.key:
            self.key = self.generate_key()

        return super(ApiKey, self).save(*args, **kwargs)

    def generate_key(self):
        # Get a random UUID.
        new_uuid = uuid.uuid4()
        # Hmac that beast.
        return hmac.new(str(new_uuid), digestmod=sha1).hexdigest()


def create_api_key(sender, **kwargs):
    """
    A signal for hooking up automatic ``ApiKey`` creation.
    """
    if kwargs.get('created') is True:
        ApiKey.objects.create(user=kwargs.get('instance'))