【问题标题】:Generate a random URL with Python using App Engine使用 App Engine 使用 Python 生成随机 URL
【发布时间】:2015-12-22 14:32:09
【问题描述】:

我知道在 Stackoverflow 上围绕这个主题提出了许多问题并得到了回答,但我希望由于这个问题需要一些额外的信息,因此它需要自己的空间,或者可能对其他人有用。

我有一个使用 Python 在应用程序引擎上运行的 Web 应用程序,我希望能够向用户发送唯一的 URL,并限制其他用户根据他们收到的 url 猜测 url 的能力。我希望用户不需要经过身份验证即可查看与 url 关联的数据。

我的问题是关于创建、可能检查和存储网址的最佳方式。一种选择是使用uuid.uuid4() 并将此值存储在数据模型中以检索信息。我可以使用uuid.uuid5 并使用数据存储中的key_value,我也可以base64 对每个选项进行编码,或者我可以简单地使用数据存储key_value

无论我选择哪种方法,它是否都是唯一的,所以我不需要检查 url 是否已经存在于数据存储中,或者检查它是否以前生成过?

最后一个问题是我应该将 url 存储在数据存储中还是使用函数将 url 映射回数据存储中的现有数据。

总结一下:

  1. 您建议我使用什么方法来创建 URL 以及为什么
  2. 是否谨慎检查 url 之前是否已创建
  3. 我应该将 URL 存储在数据存储中还是使用函数将其映射回来

谢谢

【问题讨论】:

    标签: python google-app-engine url uuid


    【解决方案1】:
    1. 足够大的随机字符串应该足够好,因为冲突的可能性很小。我想您也可以使用数据存储区中的自动密钥,因为它们保证是唯一的。

    2. 如果您遵循 1,我认为没有必要这样做。

    3. 我会在数据存储中创建一个实体,将 URL 映射到您想要服务的内容,而不是通过哈希函数。这样您就可以更好地控制要公开的对象和要保密的对象。如果您看到某个网址公开,您将能够轻松更改它。

    如果您想在 Cloud Storage 上提供服务,您可以尝试 Signed URLs1


    【讨论】:

    • 感谢您对签名 URL 的评论
    • 为了方便访问,我使用 URL 的唯一部分作为键名。
    猜你喜欢
    • 1970-01-01
    • 2016-09-26
    • 2012-03-20
    • 2015-06-15
    • 1970-01-01
    • 1970-01-01
    • 2014-05-21
    • 2021-06-19
    • 1970-01-01
    相关资源
    最近更新 更多