微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Django rest-auth,我不明白令牌认证和权限无法获得凭据

如何解决Django rest-auth,我不明白令牌认证和权限无法获得凭据

简单的推特之类的应用程序,试图了解权限和身份验证。所以我现在有 3 个视图,所有帖子视图、特定人员的帖子和创建帖子视图。看起来像这样:

@api_view(['GET'])
@permission_classes((IsAuthenticated,))
def posts(request):
    posts = Post.objects.order_by("-created")
    serializer = PostSerializer(posts,many=True)
    return Response(serializer.data)

@api_view(['GET'])
@permission_classes((IsAuthenticated,))
def profile(request,name):
    posts = Post.objects.filter(user__username=name)
    serializer = PostSerializer(posts,many=True)
    return Response(serializer.data)

@api_view(['POST'])
@permission_classes((IsAuthenticated,))
def post_create(request):
    data = request.data
    print(request.user)
    serializer = PostSerializer(data=data)
    if serializer.is_valid():
        serializer.save(user=request.user)
        return Response(serializer.data,status=status.HTTP_201_CREATED)
    return Response(serializer.errors,status=status.HTTP_400_BAD_REQUEST)

相关设置:

INSTALLED_APPS = [
   
    'django.contrib.admin','django.contrib.auth','django.contrib.contenttypes','django.contrib.sessions','django.contrib.messages','django.contrib.staticfiles','django.contrib.sites','rest_framework','rest_framework.authtoken','rest_auth','rest_auth.registration','allauth','allauth.account','network',# my app
]


REST_FRAMEWORK = {
    'DEFAULT_AUTHENTICATION_CLASSES': (
        'rest_framework.authentication.TokenAuthentication',),'DEFAULT_PERMISSION_CLASSES': (
        'rest_framework.permissions.IsAuthenticated',}

我目前使用 rest-authallauth 进行登录注册,我认为它们的 URL 工作正常,我可以注册用户登录获取我的令牌。但是,每当我转到其中一个网址时,它只会说

{
    "detail": "Authentication credentials were not provided."
}

尽管我实际上只是使用 rest-auth URL 和/或管理员登录

经过数小时的搜索,我想我对发生的事情有一点了解,每当我转到其中一个 URL 时,我都需要以某种方式传递我的令牌?在开发 API 时,我不知道如何在我的视图中做类似的事情。当我开始合并 Reactjs 时,我可以将令牌存储在 localstorage 中,然后将其传递到标头中,但是有没有什么方法可以在前端什么都不做的情况下做到这一点?

我确实需要凭据显然是因为然后我可以访问 request.user 并且我需要用户对象以便我可以在创建帖子时添加serializer.save(user=request.user)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。