1

使用 Python 和 Django,我将让我的用户向他们的朋友赠送基于 pdf 的礼物,所述朋友将能够通过从电子邮件链接进入我的网站来索取 pdf。

这是计划

  1. 用户给他的朋友一个礼物,输入朋友的电子邮件

  2. 在后台,将保存一个礼品模型,其中包含一个唯一生成的哈希码。

  3. 朋友收到电子邮件,提供了下载 pdf 的链接,如 ( www.mydomain.com/gift/<hash code here>)

  4. 当点击邮件链接时,系统会检查是否存在具有给定哈希码的礼品模型。

  5. 如果是这样,下载开始,否则为 404。

这是解决这个问题的聪明方法吗?如果是这样,你会推荐什么散列函数?有趣的是 /gift/ 对公众开放,如果幸运地找到了链接,任何人都可以认领它。我打算通过接收者的名字加上礼物模型的 pk 来提供散列函数

4

3 回答 3

6

不需要使用哈希,你只需要一个随机令牌。

  1. 创建一串随机字符
  2. 如果它已被使用(不太可能)重复步骤 1

使字符串足够长,让您感到高兴,这将很难猜到

生成随机字符串的简单方法是

>>> import os
>>> os.urandom(10).encode('hex')
'3fa0c2f72ff275f48d66'
>>> os.urandom(20).encode('hex')
'ecc1143b3fc90bd99bcd609b326694f13291e3d1'
>>> os.urandom(30).encode('hex')
'd4a9a2cd7b48eca831e9805e68dd6f7db7275b654e55cdec603631a5a355'
>>> 
于 2010-02-25T21:46:57.440 回答
1

UUID 非常随机

In [13]: import uuid

In [14]: uuid.uuid4().hex
Out[14]: 'f7a7667e94574e32b3589f84ca35a98d'
于 2010-02-25T23:35:10.220 回答
0

它可能不会完全按照您希望的方式做事,但这个项目将是一个很好的起点:

http://github.com/mogga/django-token-auth/

于 2010-02-25T21:40:30.613 回答