模型对象的模糊Django URL

模型对象的模糊Django URL,django,obfuscation,django-urls,Django,Obfuscation,Django Urls,我有一个Django模型,看起来像这样: class Person(models.Model): name = models.CharField(max_length=32) place = models.ForeignKey(Place, related_name='people') approved = models.BooleanField() objects = PersonManager() @models.permalink def

我有一个Django模型,看起来像这样:

class Person(models.Model):

    name = models.CharField(max_length=32)
    place = models.ForeignKey(Place, related_name='people')
    approved = models.BooleanField()
    objects = PersonManager()

    @models.permalink
    def get_absolute_url(self):
        return('deal_details', (), {
            'person_slug': slugify(self.name),
        })
如您所见,我已经有了对象的绝对URL。但是,我想创建一个难以猜测的URL来跟踪对象的审批流程。有人做过类似的事情和/或对我应该如何进行有任何建议吗


我的第一个想法是创建一个模型字段,比如通过。然后URL看起来像/people/status//。但也许有更好的方法可以做到这一点?

类似URL缩写的内容是:模糊处理可能会奏效


这样做的一个好方法是使用settings.py中的安装密钥散列对象ID。这就是密码重置电子邮件表单所做的-在django.contrib.auth.tokens中有一些有用的代码-在最新的SVN版本中,django.contrib.auth.crypto中也有一些有用的代码。

我使用UUIDField做了类似的事情

在模型中:

uuid = UUIDField(auto=True)
然后在视图中检查id和uuid:

item = get_object_or_404(Item, id=id, uuid__exact=uuid)

UUIDField来自

在这种情况下,要么您关心安全性,应该使用真正的登录,要么您不关心安全性,可以跳过混淆步骤。无论哪种方式都比隐蔽的安全性好。如果你真的想假装它有用,你可以用一堆你想隐藏的东西。@Nathon:绕过态度--想假装它有用--听起来很夸张--我相信你说得很有道理。衷心感谢。非常感谢。这种类型的混淆通常用于短寿命页面,如密码重置。也许我应该重新考虑一下它是否符合我的目的。感谢您的输入。@Naton:随机散列和登录+密码有什么区别?如果有人猜到或截获了他们中的任何一个,你就完蛋了。