擅长:python、mysql、java
<p>不确定这是最好的方法,但我可能只是生成一个UUID4,它可以在URL中用于重置密码,并在'n'时间后过期。</p>
<pre><code>>>> import uuid
>>> uuid.uuid4().hex
'8c05904f0051419283d1024fc5ce1a59'
</code></pre>
<p>您可以使用<a href="http://redis.io">http://redis.io</a>之类的方法来保存该键,并使用适当的用户ID值设置其生存时间。所以,当有东西从<a href="http://example.com/password-reset/8c05904f0051419283d1024fc5ce1a59">http://example.com/password-reset/8c05904f0051419283d1024fc5ce1a59</a>传入时,它会查看它是否有效,如果有效,则允许更改以设置新密码。</p>
<p>如果您确实需要一个“验证pin”,那么请与令牌一起存储一个小的随机密钥,例如:</p>
<pre><code>>>> from string import digits
>>> from random import choice
>>> ''.join(choice(digits) for i in xrange(4))
'2545'
</code></pre>
<p>以及在重置链接上输入的请求。</p>