Django JWT - 如果正文中的密钥有效,则允许没有凭据的请求
Posted
技术标签:
【中文标题】Django JWT - 如果正文中的密钥有效,则允许没有凭据的请求【英文标题】:Django JWT - Allow request with no credential if key in body is valid 【发布时间】:2021-11-06 08:11:21 【问题描述】:我有一个需要访问令牌进行身份验证的端点。 同样在此端点中,有一个不需要的序列化程序 UUID 字段。 我想做的是:
如果 UUID 字段在正文中传递,请检查此 UUID 是否有效并在数据库中注册。 如果它无效,则会引发 DRF ValidationError。 如果未传递任何 UUID 字段,则需要使用访问令牌对请求进行身份验证。有没有办法进行这种选择性的身份验证?
【问题讨论】:
你检查了吗:***.com/questions/64496495/… 谢谢,我去看看 【参考方案1】:好吧,过了一段时间我想出了解决方案。 我向任何用户开放了访问视图的权限,并且在 post 方法中,我验证了用户是否是匿名的,以便检查请求正文键。如果传递了有效的 JWT 访问令牌,则会找到一个用户,这将返回 False。如果这些条件中的任何一个返回 True,则会给出一个简单的凭据错误响应。
permission_classes = [
AllowAny,
]
def post(self, request, *args, **kwargs):
if request.user.is_anonymous:
request_token = request.POST.get('token')
token = Token.objects.filter(token=request_token)
if token.exists() and token.values()[0]['status'] == 'valid':
pass
else:
return Response(
data="Invalid Credentials": "Pass a valid credential.",
status=status.HTTP_200_OK,
【讨论】:
以上是关于Django JWT - 如果正文中的密钥有效,则允许没有凭据的请求的主要内容,如果未能解决你的问题,请参考以下文章
使用 RSA 算法 Django Rest Framework 简单 JWT 时出现错误无法反序列化密钥数据