【问题标题】:How to generate hash in django 1.9 like Invitation Link如何在 django 1.9 中生成哈希,如邀请链接
【发布时间】:2017-11-24 17:53:45
【问题描述】:

我想向用户发送包含 url+hash 的电子邮件 像这样吹

www.mywebsite.com/user/verify/121#$%3h2%^1kj3#$h2kj1h%$3kj%$21h

并像这样在数据库中针对用户保存此哈希

ID |电子邮件 |哈希 1 | yourremail@gmail.com |121#$%3h2%^1kj3#$h2kj1h%$3kj%$21h

当用户收到电子邮件时,它应该检查并比较哈希值并根据情况执行操作。

我的问题很简单,如何为每个用户生成唯一的哈希以及如何将它们存储在数据库中。

【问题讨论】:

标签: django hash


【解决方案1】:

如果 "hash" 是指一个唯一的字符串,则可以使用 uuid.uuid4 来达到此目的。

>>> import uuid
>>> unique_id = str(uuid.uuid4())
>>> print unique_id
d8814205-f11e-46e1-925e-a878fc75cb8d
>>> # replace dashes, if you like
>>> unique_id.replace("-", "")

我已将其用于需要验证用户电子邮件的项目。


P.S.:它不称为哈希,而是称为唯一 ID。散列是另一回事,您可以从给定的字符串生成一个值。 See this question 了解更多。

【讨论】:

  • 感谢您的回答和澄清...最后一个问题我应该使用 charfield 将其保存在数据库中吗?
  • 是的,CharFIeld 没有问题,因为 uuid 始终是固定长度的。
【解决方案2】:

Django 有一个Cryptographic Signing module,它有助于为您需要的任何数据生成唯一且可验证的签名。如果您尝试这样做以验证请求是否由适当的用户完成,则可以使用该库来验证请求,而无需将哈希存储在数据库中。

【讨论】:

    猜你喜欢
    • 2017-02-19
    • 2021-10-22
    • 1970-01-01
    • 2016-07-09
    • 1970-01-01
    • 1970-01-01
    • 2015-02-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多