【发布时间】:2020-01-23 11:28:09
【问题描述】:
我有一个使用 django 管理界面的应用程序。此应用程序允许用户对其产品执行 CRUD 操作。在这些操作期间,管理 URL 会公开该产品的实际 ID 值,例如 https://localhost/product/1/change。我正在寻找一个选项来发送 URL 中显示的混淆 ID 值,例如https://localhost/product/F87BA2/change。有人可以分享您对如何实现这一目标的想法吗?
我已经有一个为给定 ID 提供混淆值的函数,但是如何在自动生成的管理 URL 中使用此函数?
谢谢!
【问题讨论】:
-
ID 总是一个数字吗?几位数?如果您只想混淆(而不是加密)它,只需选择另一个解码就可以完成这项工作,例如Base64 之类的。
-
@nostradamus,是的,ID 永远是一个自动递增的数字。基本上它是一个整数。是的,混淆就足够了,我有一个函数可以进行这种解码。但是如何使这个编码值成为管理 URL 的一部分是我的问题。由于这些管理 URL 是自动生成的,哪些文件需要更改/覆盖才能使用这些混淆值?
-
@Malathy 您可以随时重新定义管理员网址 - 但实际上,您为什么要为管理员执行此操作?它不应该是您网站的公共部分(我的意思是:它只应该由受信任的内部用户使用 - 如果您想向非员工登录用户公开某些版本功能,则不要使用管理员,您编写自己的表单和视图)
-
@brunodesthuilliers,管理界面供有限的客户根据他们与我们的订阅创建和/或自定义我们的应用程序。因此,我们为这些视图选择了 django 管理界面。在这种情况下,我们如何重新定义 admin url?请提出建议。
-
@Malathy 我建议您不要为此使用管理员,而是构建自己的视图和表单集。根据经验(长期经验),它实际上会为您节省很多时间:尝试使用管理员进行操作,您很快就会发现将必须编写无论如何,您自己的视图和表单(和 url),然后您必须将它们插入管理中,然后覆盖这么多管理代码以使其满足您的需求,最终您将做更多的工作而不是您只需使用普通视图、表单和模板编写自己的专用应用程序即可。我的 2 美分...
标签: python django django-admin obfuscation