python - 只能通过用户名重置密码

标签 python django django-authentication

我使用电子邮件实现了 django 密码重置,但目前希望仅限于用户名,以便用户只能使用用户名更改密码。尝试过django built-inplugin但无法设置为仅 username 。如有任何建议,我们将不胜感激

最佳答案

编写您自己的重置密码代码。几乎您需要编写的唯一代码是获取用户、生成用于重置密码的唯一链接并发送电子邮件的第一步。

Django 使用PasswordResetForm 来实现这一点。源代码为here (第 242 - 306 行)。将此代码复制/粘贴到您的 forms.py(包括所需的导入)并修改它以接受用户名而不是电子邮件。

然后在您的代码中验证您的PasswordResetForm 并调用save() 来生成唯一的链接并发送邮件。

form = YourPasswordResetForm(request.POST)
if form.is_valid():
    form.save()

请记住始终返回成功消息,即使用户不存在且电子邮件未发送,否则您将泄露有关注册用户名的信息。

关于python - 只能通过用户名重置密码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48243168/

相关文章:

python - 在我自己的 View 中使用 django PasswordResetView 功能

django-models - 自动为 OneToOne 字段选择相关

python - 如何在 X_train、y_train、X_test、y_test 中分割图像数据集?

Python – 如何模拟单个函数

python - 使用 Django 服务 Keras 模型

python - Django : How to login user directly after registration using generic CreateView

python - 每次对输出 NetCDF 变量进行赋值是否都会导致整个数据集的重写?

python - 查找最大的文件并删除文件夹

python - 登录后重定向回上一页(Django)

python - 保存相关图片 Django REST Framework