繁体   English   中英

在 Django 中使用 JWT 令牌进行身份验证

[英]Authenticating with JWT token in Django

我是 Django 的初学者,我正在从这里学习 JWT 令牌。

https://jpadilla.github.io/django-rest-framework-jwt/#rest-framework-jwt-auth

我已经在我的 settings.py 中进行了设置。

REST_FRAMEWORK = {
    'DEFAULT_AUTHENTICATION_CLASSES':
    (
        'rest_framework.authentication.SessionAuthentication',
        'rest_framework.authentication.BasicAuthentication',
        'rest_framework_jwt.authentication.JSONWebTokenAuthentication',
    ),

    'DEFAULT_MODEL_SERIALIZER_CLASS':
        'rest_framework.serializers.ModelSerializer',

    'DEFAULT_PERMISSION_CLASSES':
    (
        'rest_framework.permissions.IsAuthenticated',
    )
}

如果我卷曲,我实际上会取回我的令牌。

curl -X POST -d "username=khant&password=khant" http://127.0.0.1:8000/api-token-auth/

但是当我访问受保护的网址时,

curl -H "Authorization: JWT eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VybmFtZSI6ImtoYW50IiwidXNlcl9pZCI6OCwiZW1haWwiOiJraGFudEBnbWFpbC5jb20iLCJleHAiOjE0NzQ5MDQxNTJ9.jaZ3HwsXjx7Bk2ol5UdeE8UUlq4OEGCbnb1T8vDhO_w" http://127.0.0.1:8000/dialogue_dialoguemine/

当我从网络访问时,它总是这样说。 本地主机对我来说没问题。

{"detail":"未提供身份验证凭据。"}

在我受保护的 url 中,我只编写了简单的 api 来查询。 我可以知道如何解决这个问题吗?

class DialogueMineView(generics.ListAPIView):
    permission_classes = (IsAuthenticated,)

    serializer_class = DialogueSerializer
    paginate_by = 2

    def get_queryset(self):

        user = self.request.user
        return Dialogue.objects.filter(owner=user)

我现在知道了。 就我而言,我不仅仅在网络上还可以。 我从这个链接检查。

Django Rest Framework - 未提供身份验证凭据

它说我需要添加

WSGIPassAuthorization On

在我的 apache 目录中的 httpd.conf 中。 现在没事了。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM