如何解决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-auth
和 allauth
进行登录和注册,我认为它们的 URL 工作正常,我可以注册用户并登录并获取我的令牌。但是,每当我转到其中一个网址时,它只会说
{
"detail": "Authentication credentials were not provided."
}
尽管我实际上只是使用 rest-auth URL 和/或管理员登录。
经过数小时的搜索,我想我对发生的事情有一点了解,每当我转到其中一个 URL 时,我都需要以某种方式传递我的令牌?在开发 API 时,我不知道如何在我的视图中做类似的事情。当我开始合并 Reactjs 时,我可以将令牌存储在 localstorage 中,然后将其传递到标头中,但是有没有什么方法可以在前端什么都不做的情况下做到这一点?
我确实需要凭据显然是因为然后我可以访问 request.user
并且我需要用户对象以便我可以在创建帖子时添加它 serializer.save(user=request.user)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。