如何使用邮递员测试 Django REST 框架登录保护 API?
Posted
技术标签:
【中文标题】如何使用邮递员测试 Django REST 框架登录保护 API?【英文标题】:How to test Django REST Framework Login Protected API using postman? 【发布时间】:2018-11-15 20:01:57 【问题描述】:我需要使用 postman 测试 REST API。 API 是使用 Django REST 框架构建的。只有登录用户才能访问 API。我无法找到如何使用邮递员发送登录凭据。提前致谢。
class ApiMemberGroupNameList(views.APIView):
permission_classes = (
permissions.IsAuthenticated,
RequiredOrgPermission,
RequiredOrgStaffMemberPermission)
def get(self, request, **kwargs):
pk = kwargs.get('pk')
hash = kwargs.get('hash')
member_obj = get_object_or_404(Member.objects.filter(org__hash=hash, pk=pk))
return Response(GroupListSerializer(member_obj.groups.all(), many=True).data)
【问题讨论】:
通过 Postman 将登录详细信息与发布请求一起发送到您的登录 URL。我不知道您的身份验证是如何工作的,但是您的 API 应该返回某种访问令牌,您可能可以使用它来访问 API 的其余部分 从@Snackoverflow 继续,那么您应该可以使用***.com/questions/40539609/… 之类的访问令牌 身份验证不是令牌基础。这是使用用户名和密码的正常 Django 身份验证。我们可以通过浏览器发送到服务器的方式发送 cookie 信息。 【参考方案1】:如果你想使用 Basic Authentification 来测试 Django REST API,必须在 Django REST Framework 设置中允许:
'DEFAULT_AUTHENTICATION_CLASSES': [
'rest_framework.authentication.BasicAuthentication',
...
【讨论】:
【参考方案2】:您可以在 POSTMAN 中使用Basic Auth
。参考这个截图:
您可以在 POSTMAN 控制台中更改 HTTP Methods
、URLs
、Data Payload
(在 Body
选项卡下)等
UPDATE-1
在你的 cmets 之后,我试图重现问题。我所做的是:
创建了一个视图
from rest_framework.views import APIView
from rest_framework.permissions import IsAuthenticated
from rest_framework.response import Response
class MySampleView(APIView):
permission_classes = (IsAuthenticated,)
def get(self, request):
return Response(data="status": True)
添加到urls.py
urlpatterns = [
url(r'^mysampleview/$', MySampleView.as_view())
]
我的 POSTMAN 回复如下:
Authorization Screenshot
Header Screenshot
我的结论
您可能输入了错误的凭据或其他内容。我建议您打开一个新的 POSTMAN 选项卡并重复该过程,同时尝试使用 POSTMAN 中已使用的相同凭据登录 Django 管理员
【讨论】:
我试过这个,但它不起作用。通常,Django 通过会话和 cookie 来验证经过身份验证的用户。 你能添加你各自的view.py
吗?
彼得我已经添加了有问题的视图。
好像您只在views
中添加了permission_classes
。您是否在设置中添加了任何其他身份验证方法?
不,我没有在设置中使用任何其他身份验证模型。即使我删除了除 IsAuthenticated 之外的权限类。我仍然面临同样的问题。以上是关于如何使用邮递员测试 Django REST 框架登录保护 API?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Django REST 框架可浏览 API 中发送标头
如何测试使用邮递员提供 .zip 文件的 REST API?