通常、電子メールの検証のための通常のシナリオでは、対応する電子メールの固有のトークンが生成されます。ユーザーがメールをクリックすると、それらが表示されます。彼はPOSTページにかかってくるフォームを送信するか、直接検証するだけのページに移動します。
唯一のセキュリティは、一意のIDは一意であり、誰かがブルートフォースによってこれらのIDを生成する可能性は非常に低いということです。それが唯一のセキュリティです。有効期限を追加して、リンクを数日間有効にすることもできます。
対応する電子メールは、同じ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()
これは私が実際にやったことです。私はDjoserのactivation_emailコードを調べ、URLにuuid以外のセキュリティはありません。とにかくありがとう。 – pnhegde
@pnhegdeそれでもあなたの質問に答えてくれることを願っています。 Upvote、受け入れて閉じる。 :) –