【问题标题】:Django Rest Framework With JWT user authentication (getting anonymous user )带有 JWT 用户身份验证的 Django Rest 框架(获取匿名用户)
【发布时间】:2020-05-02 10:32:36
【问题描述】:

我正在使用 JWT 和 Django 来验证来自 Ajax jquery 的请求。我的 Jquery 是

$.ajax({
        url: "/customerapi/get-customer-detail/",
        type: 'GET',
        // headers: {"Token": localStorage.getItem('token')},
        beforeSend: function (xhr) {
        /* Authorization header */
        xhr.setRequestHeader("Authorization", "Token " + localStorage.getItem('token'));
        xhr.setRequestHeader("X-Mobile", "false");
         },

        success: function (res) {

        }
    });

当我在服务器上收到此请求时,我会像这样进行身份验证

from rest_framework.permissions import IsAuthenticated

class GetCustomerData(APIView):
    authentication_classes = (JSONWebTokenAuthentication,  )
    permission_classes = (IsAuthenticated ,)
    def get(self, request):
        try:
        Customer.objects.get(id=request.user)

这里我的 Request.user 总是匿名的。为什么会这样?

我的中间件类是

MIDDLEWARE = [
    'django.middleware.security.SecurityMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',

]

【问题讨论】:

    标签: python django django-rest-framework jwt django-authentication


    【解决方案1】:

    它应该是 JWT 而不是 Token 里面的标题值:

    xhr.setRequestHeader("Authorization", "JWT " + localStorage.getItem('token'));
    

    【讨论】:

    • 谢谢先生
    • 即使 request.META['HTTP_AUTHORIZATION'],也没有携带我的标头。你知道可能是什么问题吗?
    猜你喜欢
    • 2021-04-11
    • 2018-05-21
    • 2019-03-01
    • 2021-12-21
    • 2018-02-12
    • 2019-07-11
    • 1970-01-01
    • 2017-05-13
    • 2021-06-05
    相关资源
    最近更新 更多