Django和Token身份验证的Rest框架混淆

时间:2014-09-26 15:29:32

标签: python django authentication django-rest-framework

问题背景

您好,我在解决如何将auth令牌集成到我的应用程序中时遇到了一些问题。 目前,我按照文档设置了所有内容(至少我是这么认为的,请参阅我查看过的文档中的第1点)。我可以访问身份验证令牌端点,实际上获得一个令牌,我也可以验证它是否允许我使用该令牌进行身份验证,因为我已将其添加到我的某些端点所需的权限中(下面提供)。

核心问题

我的问题是,我试图弄清楚如何将用户的帖子与他们的身份令牌相关联,并让他们成为'所有者'该帖子的标记,但使用他们的用户名'而不是他们的标记'串。我感谢任何和所有的帮助:)

在我的models.py文件中...我收到的错误是所有者必须是'用户'而且我是从Django auth.User那里假设的。我想知道如何更改它,以便它使用令牌来确定用户是谁并将其保存为他们的名字。我查看了文档,但我不确定在哪里可以找到它。

我查看的文件

  1. rest framework authentication
  2. 正如我先前所述,我可以使用我的代码在我的视图中使用我的代码进行身份验证....并且它运行正常,没有错误。这让我相信我对我的model.py做了一些错误(粘贴在下面)。

    authentication_classes = (authentication.TokenAuthentication,)

    models.py

    from django.db import models
    from django.contrib.auth.models import User
    from rest_framework.authtoken.models import Token
    # Create your models here.
    class PRequests(models.Model):
      created = models.DateTimeField(auto_now_add=True)
      owner = models.ForeignKey('auth.User', related_name='p_requests')
      first_name = models.CharField(max_length=100)
      last_name = models.CharField(max_length=100)
      pmessage = models.TextField()
      approved = models.BooleanField(default=False)
    
      def save(self, *args, **kwargs):
         super(PRequests, self).save(*args,**kwargs)
    

    settings.py

    INSTALLED_APPS = (
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.sites',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    # Uncomment the next line to enable the admin:
    'django.contrib.admin',
    # Uncomment the next line to enable admin documentation:
    # 'django.contrib.admindocs',
    'api',
    'rest_framework',
    'rest_framework.authtoken',
    'wlmapp',
    'p_requests',
    'corsheaders',
    'nuggets',
    )
    

    我已将authtoken添加到框架并包含一个端点,以便用户可以实际接收令牌。

    urlpatterns += patterns('', 
        url(r'^api-auth/', include('rest_framework.urls', namespace='rest_framework')),
        url(r'^api-token-auth/', 'rest_framework.authtoken.views.obtain_auth_token'),
    )
    

1 个答案:

答案 0 :(得分:0)

在对问题进行进一步调查之后,似乎我做了所有事情,除了我必须清除数据库(删除数据库)以便令牌正确完成。遗憾的是,迁移并没有奏效。

开始工作的步骤: 1.删​​除本地sql lite数据库 2.重新创建数据库 得到我的令牌 4.恢复正常操作,现在一切运行良好:)