繁体   English   中英

Object 项目的唯一 URL 生成器或隐藏 URL 参数的 ID

[英]Unique URL generator for Object Items or hiding ID from URL parameter

我正在开发一个使用 Python3 和 Django 构建的应用程序,该应用程序使用来自数据 model 的填充字段生成 PDF(通过 HTML)。 我创建了一个 URL function ,它采用文档 ID 和类型的值,然后生成该文档的 PDF 。

What I want to do is to email clients a link that contains that URL function with a specific document ID, however, the problem that I'm facing is that the generated URL has the document ID in the URL parameter, and this is terrible for出于安全目的,他们所能做的就是更改 URL 上的 ID 号并访问不同的文档(他们不应该看到)

我的问题是:

A- 有没有办法为我可以发送给客户的每个生成的 PDF 创建一个唯一链接?

B-在随机生成的 15 个字符值的 model 中创建另一个字段会更好,我使用它而不是参数中的 ID?

我将使用 Python 3.6+ 中提供的新secrets模块。 这是一个例子:

from secrets import token_urlsafe
random_string = token_urlsafe(16)
print(random_string)

结果将是这样的 - nslhgo0dYowR6CvMDEwC_A

好的,所以我通过执行以下操作修复了它:

1- UUID 绝对是一种方式,感谢@Toan Quoc Ho 的建议。 我为每个模型添加了一个 UUID 字段,

2- 因为我想将我的 PK 保留为 ID,所以我遇到了生成现有文档的唯一 UUID 字段的问题。 所以我遵循了这个解决方案,它神奇地起作用了。 唯一需要注意的是,应用这些更改时不能有流量,否则数据库会崩溃,请注意。

3- 然后,我使用 UUID 和 ID 来确定文档,并将它们作为 URL 参数使用正则表达式作为 (\d+)/([\w-]+)

瞧,这正是我想要的。 没有两个文档共享相同的 UUID,反之亦然。 我可以为每个文档生成一个唯一的链接,并阻止任何其他访问。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM