JWT Token验证Authorization 失败原因记录

项目环境:djangorestframework + apache + mod_wsgi 主要使用token进行身份验证

# rest_framework 配置
REST_FRAMEWORK = {
    # JWT Token认证
    'DEFAULT_AUTHENTICATION_CLASSES': (
        # drf的这一阶段主要是做验证,middleware的auth主要是设置session和user到request对象
        "api.utils.authentication.JSONWebTokenAuthentication",  # 重写过的验证 使用token验证
        # 'rest_framework.authentication.SessionAuthentication',  # session 认证

    ),
    'DEFAULT_PAGINATION_CLASS':  'rest_framework.pagination.PageNumberPagination',
    'PAGE_SIZE': 2,  # 每页数目

    'DEFAULT_PERMISSION_CLASSES': (
        # 'rest_framework.permissions.IsAuthenticated',
        'api.utils.permissions.ShareAppIsAuthenticated',
    ),
}

在线下跑的时候,使用api获取token 加入请求头中,可以访问到数据。

JWT Token验证Authorization 失败原因记录_第1张图片

但部署到线上时,能获取到token  但加入请求头的时候 访问返回401。一直以为是跨域请求的问题,在Apache配置跨域请求后 发现还是访问失败。

JWT Token验证Authorization 失败原因记录_第2张图片

后面看了官方文档才发现 默认情况下不会将授权标头传递给WSGI应用程序。贴出原地址:https://www.django-rest-framework.org/api-guide/authentication/#apache-mod_wsgi-specific-configuration

在apache的httpd.conf中加入一行配置就可以用了

WSGIPassAuthorization On

你可能感兴趣的:(django)