我需要在网站上启用重置/恢复密码 在烧瓶上我想实现在用户重置pwd时生成令牌的方法。 然后将url发送到用户电子邮件(示例http://example.com/?token=huih23ui4h235h324h5oi) 确认重置密码。 用户在此URL上确认重置pwd后,我生成新的pwd,更新DB并将此pwd发送给用户。
我该怎么做?可能存在一些模块或库?
答案 0 :(得分:2)
使用ItsDangerous库。
user_id = 1
password = 'shh!'
from itsdangerous import URLSafeSerializer
s = URLSafeSerializer('super-secret-key')
print s.dumps([user_id, password])
## WzEsInNoaCEiXQ.kt-4CV03gNXcN86xuRIgunbW0Sw
因此,您要向他们发送带有该令牌的链接。然后当他们点击它时,你解码它:
print s.loads('WzEsInNoaCEiXQ.kt-4CV03gNXcN86xuRIgunbW0Sw')
## [1, u'shh!']
并将其与数据库进行比较,看看他们是否已经更改了密码,如果没有 - 让他们更改密码。您还可以添加时间戳,以便设置密码更改的时间限制。
答案 1 :(得分:2)
Heyo!
@doobeh是对的 - itsdangerous是最好的图书馆直接处理这些东西。
但是,如果您正在寻找更简单的解决方案,则可能需要查看flask-stormpath。它为你处理令牌生成的东西,以及它周围的许多其他东西(到期令牌等)。
对于密码重置,此处的内容如下:
我是flask-stormpath的作者并且在stomrpath工作,所以我有点偏颇,但这个用例非常好。