DRF JWT 在 OPTIONS 请求上不需要令牌
Posted
技术标签:
【中文标题】DRF JWT 在 OPTIONS 请求上不需要令牌【英文标题】:DRF JWT Don't require token on OPTIONS-requests 【发布时间】:2018-04-01 17:26:25 【问题描述】:当用户执行 OPTIONS 请求时,如何让 JWT 不检查并要求令牌?
我已经定义了自己的options(self, request, *args, **kwargs)
方法,但是只要启用permission_classes = [isAuthenticated]
,就会要求用户提供登录凭据...
我们在 React 中用于与 DRF 交互的 API 必须执行一个 OPTION-request,它不包含任何标头。当它没有返回 200 代码时,它不会执行对服务器的实际请求...
【问题讨论】:
【参考方案1】:我认为最简单的方法是声明custom permissions并使用它(在permissions.py文件中):
from rest_framework import permissions
class IsAuthenticated(permissions.IsAuthenticated):
def has_permission(self, request, view):
if request.method == 'OPTIONS':
return True
return super(IsAuthenticated, self).has_permission(request, view)
并在设置中将DEFAULT_AUTHENTICATION_CLASSES
更改为此类...
【讨论】:
请提供错误信息,我认为你的正确方法是覆盖JSONWebTokenAuthentication
get_jwt_value method
没有错误代码,我只收到带有“详细信息”的 401 响应:“未提供身份验证凭据。”来自智威汤逊。
第93行条件生成的消息我认为你可以覆盖它,我添加到答案示例中。
恐怕这也不起作用。从源代码中可以看出,这些函数都没有返回““详细信息”:“未提供身份验证凭据。”作为 401 旁边的消息...
如此处所示,错误消息未列在 JWT 消息文件中:github.com/GetBlimp/django-rest-framework-jwt/blob/master/…以上是关于DRF JWT 在 OPTIONS 请求上不需要令牌的主要内容,如果未能解决你的问题,请参考以下文章
drf_jwt手动签发与校验-drf小组件:过滤-筛选-排序-分页
请求的资源上不存在“Access-Control-Allow-Origin”标头,并且 JWT 令牌在 put 方法上不以 Bearer String 开头