【发布时间】:2019-11-12 17:57:18
【问题描述】:
我们公司的一个团队正在开发一款新应用。这个应用程序将包含一个 javascript 前端和一个 Django 后端(使用 graphql 在两者之间进行通信)。我正在开发 Django 后端,我是该项目的唯一后端开发人员。
我们目前正在开发“reset_password”功能,该功能将遵循熟悉的模式,即单击按钮,接收带有密码重置链接的电子邮件,该链接将引导至“reset_password”表单。尽管前端将呈现所有表单,但处理逻辑的是后端。
我编写的代码大量借鉴了默认的django.contrib.auth 视图/表单。电子邮件中的链接包含一个令牌(使用PasswordResetTokenGenerator().make_token(user) 调用创建)和一个uid(使用urlsafe_base64_encode(force_bytes(user.pk)) 调用创建)。
但是,我的前端同事问我是否可以放弃使用uid(可用于识别用户的任何其他字段),而是从令牌“向后工作”到用户。现在我知道令牌是由用户生成的(作为创建令牌调用中的参数提供:PasswordResetTokenGenerator().make_token(user))但到目前为止,似乎不可能使用令牌来检索用于创建它的用户. (我也想到,这样做会带来安全风险)
所以我的问题如下:我是否正确地认为使用令牌来获取用户是不可能的(或者至少是不可取的)?
【问题讨论】:
标签: django django-authentication