Я пишу процесс активации учетной записи с нуля в Django, и вот мой основной мыслительный процесс:
Создайте модель как:
class UserAccountActivation(models.Model):
lock = models.CharField(max_length=16)
key = models.CharField(max_length=16)
При необходимости сгенерируйте значения блокировки и ключа, используя такую функцию:
def generate_entry():
"""Generate a random alphanumeric string between 8 and 16 characters long."""
''.join(random.choice(string.ascii_lowercase + string.digits) for x in range(random.randint(8,16))
Составьте ссылку, подобную этой:
r'^activate/(?P<lock>\w{8,16})/(?P<key>\w{8,16})/?$'
И отправь. Когда они нажимают на ссылку, я активирую аккаунт и отключаю ключ активации.
Первоначально я думал о хэшировании случайных строк в качестве дополнительной меры предосторожности, но это кажется ненужным, и было бы довольно долго иметь два ключа длиной 32 в моем URL:
account/12345678/12345678
or
account/12345678901234567890123456789012/12345678901234567890123456789012
Это безопасный и рекомендуемый способ активации аккаунта? Нужно ли даже иметь произвольную длину в строках?