私は 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})/?$'
そして送り出す。リンクをクリックすると、アカウントがアクティブになり、アクティベーション キーが無効になります。
私は当初、追加の予防措置としてランダムな文字列をハッシュすることを考えていましたが、これは不要なようで、URL に 32 の長さのキーを 2 つ含めるとかなり長くなります。
account/12345678/12345678
or
account/12345678901234567890123456789012/12345678901234567890123456789012
これは、アカウントの有効化を処理する安全で推奨される方法ですか? 文字列にランダムな長さを持たせる必要がありますか?