5

サイトに登録しようとしているユーザーの電子メール検証のベスト プラクティスを研究してきました。(私はlaravelインストールを実行していますが、これはphpで発生していますが、これは理論的な問題です)。いくつか質問がありますので、意見をお聞きしたいです!

  1. アクティベーションキーを必要以上に長く保管しても意味はありませんか? 今のところ、ユーザーがアカウントをアクティブにするとキーを削除するように設定しています。
  2. アクティブ化後にテーブルからデータを消去すると、領域の割り当てが解除されますか? それとも単に空ですか?
  3. このプロセスを行うためのより良い方法はありますか? (キーと電子メールIDを列として持つ一時的な「トークン」テーブルを使用するという漠然とした考えがありました。登録が発生するたびに新しい行が追加され、ユーザーが確認すると削除されます(または、特定のタイムアウトの後)限目)
  4. 理想的には、生成されたキーのサイズはどれくらいであるべきですか? 単純な 5 桁の英数字コードは 6000 万以上の組み合わせを保持できるので、これをハッシュ化する必要はありますか?

私はこれをしばらく研究してきました。私の目標は、システムを完全にスケーラブルにし、できる限り効率的にすることです。どんな情報/議論も大歓迎です。

4

1 に答える 1

3
  1. ユーザーがアクティベーション コードをクリックして削除すると、クリックしたことを忘れてもう一度クリックすると、コードが認識されずに混乱する可能性があります。有効期限が切れるまで有効化コードをアクティブのままにしておきます。これは、少なくともメールに記載されている説明と一致します.

  2. MySQL テーブル (InnoDB を想定) からデータを削除すると、スペースが削除可能としてマークされます。その後、バックグラウンド スレッドによって実際に削除され、スペースは再利用できるようになります。ただし、断片化の他のプロセスと同様に、将来のほとんどの行に対してスペースが狭すぎる可能性があります。最終的に OPTIMIZE TABLE を実行すると、テーブルがコピーされ、自然に最適化されます。

  3. はい、メールに関連付けられた一意のキーを生成します。かなり短い時間 (おそらく 1 時間) で有効期限が切れるようにします。

  4. 私はUUID()を使用します。ユーザーはアプリから送信された電子メールのリンクをクリックする必要があります。ユーザーはトークンを入力する必要はありません。だから長くても負担にならない。UUID() は、一意性の高いランダム トークンを生成するための優れた方法です。

于 2014-05-25T05:27:24.917 に答える