确保 AnonUser 更新模型字段的 URL/page - Django Rest 框架

Secure URL/page for AnonUser to update a model field - Django Rest framework

我有一个名为 Lead 的模型,它代表了我可能的 future_customer

为了更新此模型中名为 is_approved 的布尔字段,我正在向 Lead 的 电子邮件 ID 以及 URL 并且此 URL 会将您带到我网站上的一个页面,在那里它要求批准。

如何处理 Django Rest 框架 视图中的权限?没有 django 用户与 Lead 模型关联,我不能使用任何与 类 相关的身份验证。

模糊 url 以及 AllowAny 权限是否足够好?

在验证电子邮件的正常情况下,通常会发生的情况是它们会为相应的电子邮件生成一个唯一的令牌。然后他们在用户点击电子邮件时。他被带到一个页面,其中可能有表单提交,该表单提交到 POST 页面或直接验证。

唯一的安全措施是唯一 ID 是唯一的,并且很少有人通过暴力生成这些 ID。这是唯一的保障。您还可以添加一个过期时间,使 link 仅在几天内有效。

您找到与之关联的相应电子邮件并相应地更新 is_approved 字段。

您的模型和视图应如下所示。

class Lead(models.Model):
    email = models.EmailField()
    unique_id = models.CharField(default=uuid.uuid4)
    is_approved = models.BooleanField(default=False)

    def get_absolute_url(self):
        return reverse('lead_verification', kwargs={'unique_id': self.unique_id})


class LeadVerificationView(APIView):

    def post(self, unique_id):
        lead = Lead.objects.get(unique_id=unique_id)
        lead.is_approved = True
        lead.save()