也许我缺少有关JWT理论和概念的一些基本知识,但我想理解以下内容时却把头tear了。
现在,我具有由REST framework JWT Auth驱动的登录和注册。流程是这样的:
django.contrib.auth.models.user
实例在我的settings.py中,我有
REST_FRAMEWORK = {
'DEFAULT_AUTHENTICATION_CLASSES': (
'rest_framework_jwt.authentication.JSONWebTokenAuthentication',
'rest_framework.authentication.SessionAuthentication',
'rest_framework.authentication.BasicAuthentication',
), ...
}
[此外,我还有MyModel
,它具有一个引用了User
的外键,该外键存储了一些用户数据(例如,她的购物清单)。因此,我使用JWT令牌来获取用户购物清单。
现在,我需要为用户添加社交身份验证功能。在this post之后,我从FB获得了令牌。但是问题在于,我不理解如何将该令牌与django.contrib.auth.models.user
实例相关联。更具体地说,
User
实例的first_name,last_name,email等字段?我不明白这个信息应该以某种方式包含在JWT的有效负载部分中吗?更新。
例如,如果是FB,我应该正确理解,我应该向FB发送请求以获取令牌以及用户的电子邮件,姓名和照片,如果成功,我应该回到问题开头描述的过程(创建我的“本机” django.contrib.auth.user实例,获取Django JWT令牌),而根本不考虑FB令牌吗?但这意味着我的用户模型中的password
字段应变为可空。
您最多是正确的。
这些是要执行的步骤。
rest_framework_jwt.authentication.JSONWebTokenAuthentication
将验证,获取用户并将该用户附加到request
。 您可以尝试使用jwt令牌here。该令牌可以解码为json负载,您可以通过键和值访问该json。