无法使用 Postman 和授权令牌访问后端

Posted

技术标签:

【中文标题】无法使用 Postman 和授权令牌访问后端【英文标题】:Unable to access backend using Postman and Authorization token 【发布时间】:2020-05-19 21:47:55 【问题描述】:

Angular 8 和 Django 3。我使用自定义视图类 CustomAuthToken 从 django 获得 user_idtoken。我收到包含tokenuser_id 的回复。我正在关注一个教程,并想测试向 django 发送自定义标头以查看授权是否有效。

我正在使用 Postman 并将标题设置为 Authorization: Bearer 1a683...9e428。当我向http://127.0.0.1:8000/users/dashboard/23 发送 GET 请求时,我得到了响应 "detail": "Authentication credentials were not provided."

我的理解是提供这些标题应该有效吗?还是在客户端有什么东西可以解码标头并将其发回?

views.py

class CustomAuthToken(ObtainAuthToken):

    def post(self, request, *args, **kwargs):
        serializer = self.serializer_class(data=request.data,
                                           context='request': request)
        serializer.is_valid(raise_exception=True)
        user = serializer.validated_data['user']
        token, created = Token.objects.get_or_create(user=user)
        return Response(
            'token': token.key,
            'user_id': user.pk,
        )

settings.py

REST_FRAMEWORK = 
    'DEFAULT_PERMISSION_CLASSES': (
        'rest_framework.permissions.IsAuthenticatedOrReadOnly',

    ),
    'DEFAULT_AUTHENTICATION_CLASSES': (
        'rest_framework_jwt.authentication.JSONWebTokenAuthentication',
        'rest_framework.authentication.SessionAuthentication',
        'rest_framework.authentication.BasicAuthentication',
        'rest_framework.authentication.TokenAuthentication',
    ),


urls.py

urlpatterns = [
    path('dashboard/<int:pk>', UserDashboard.as_view(), name='dashboard'),
    path(r'api-token-auth/', CustomAuthToken.as_view()),
    ]

【问题讨论】:

【参考方案1】:

授权标头中应该是Token前缀而不是承载:

Authorization: Token 1a683...9e428

更多详情请见docs。

【讨论】:

确实做到了,非常感谢。但是,在您发送的链接中,我真的不明白JWTToken 两个用例之间的区别是什么。一个是获得,一个是清爽?编辑:我想我明白了,Token 用于需要验证的外部服务? @ratrace123 欢迎您。至于 JWT,它是不同类型的令牌自动化,您实际上不需要将令牌保存在数据库中。您可以在 wikipedia en.wikipedia.org/wiki/JSON_Web_Token 上找到有关它的信息

以上是关于无法使用 Postman 和授权令牌访问后端的主要内容,如果未能解决你的问题,请参考以下文章

无法在POSTMan上获取Google oAuth 2令牌

无法通过 Postman 在 Django oauth 工具包客户端凭据授予中获取访问令牌

由于未授权客户端错误,无法获取令牌

从前端发送的授权令牌不起作用(JWT)

无法使用 OAuth 1.0a 授权我,请求访问令牌时失败

刷新德意志银行 API 访问令牌