随着技术的发展,验证用户身份的手段越来越多,指纹、面容、声纹应有尽有,但密码依然是最重要的手段。
互联网处处都有密码的身影,甚至变成了现代人的一种负担。像笔者这样的,动辄几十个账号密码,忘记其中几个简直太正常了。
本章讲如何帮助健忘症患者,重置用户密码。
安装第三方库
前面我们已经知道如何修改文章标题、正文等内容,但是密码作为验证身份的重要口令,必须以更加稳妥的方式修改。一种比较常用的方式是发送一封修改密码的邮件到用户事先绑定的邮箱里。
业务流程分析如下:
- 向用户邮箱发送包含重置密码地址的邮件。邮件的地址需要动态生成,防止不怀好意的用户从中捣乱;
- 向网站用户展示一条发送邮件成功的信息;
- 用户点击邮箱中的地址后,转入重置密码的页面;
- 向用户展示一条重置成功的信息。
上面4个步骤包含了4个视图和模板,自己写代码看来有些繁琐。
可能你会想,Django这种以开发效率著称的框架,重置密码这种常用功能是不是内置了呢?答案是肯定的。事实上内置模块的流程和上面的是完全相同的,你只需要将上面4个步骤的url
配置好就可以使用了。当然内置的模板很简陋,你可以覆写模板变成自己网站的风格。
实际上Django不仅内置了密码重置,还包括登录、登出、密码修改等功能。建议读者到一定水平后多阅读Django的源码,学习其中的编程技巧。另外这部分内容Django是用类视图写的,现在阅读可能有一定困难。
源码位置:/env/Lib/site-packages/django/contrib/auth/views.py
官方文档:Django 的验证系统
使用内置的模块似乎要简单多了,那还能不能更简单呢?确实是可以的。
Django作为优秀的Web框架,有很多优秀的第三方库(即APP)被世界各地的程序员们打包发布在网上,免费供你使用。成功从来都是站在巨人的肩膀上的,既然已经有了“轮子”,何必要自己再造一个呢。
我们这里就可以用到一个叫Django-password-reset
的第三方库。
打开虚拟环境,输入指令pip install -U django-password-reset
:
(env) E:\django_project\my_blog>pip install -U django-password-reset
Collecting django-password-reset
...
Installing collected packages: django-password-reset
Successfully installed django-password-reset-2.0
看到以上信息说明安装成功了。
快速使用
既然第三方库也是app,那肯定需要在/my_blog/settings.py
中注册了:
/my_blog/settings