2011-02-02 12 views
7

Java EE 6 Webプロファイルを使用してWebアプリケーションを開発しています。新しいユーザーに自分のアカウントのアクティベーションリンクを電子メールで送信したいと思います。これをどのように実装すればよいですか?私はJSF2を使用しています。これを行うための仕様や推奨方法はありますか?Java EE 6でアクティベーションURLを生成

+0

アクティベーションURLで送信する必要がある「キー」を作成する方法や、JSFでブックマーク可能なURLを生成する方法をお望みですか? – Nishant

+0

正確には、ユーザーが登録し、キーを持つURLが電子メールに送信されます。http://mysite.com/activate?key=dsafadsfweをクリックしてアカウントを有効にします。 – arg20

+0

jsfからurlにアクセスしてキーパラメータなどを取得できますか – arg20

答えて

16

をリダイレクトするサーブレットが含まれます登録。鍵生成プロセスは次のようにした

キーの作成

  1. ユーザーのためのユニーク検証鍵を握るusersテーブルの列verification_keyを作成します。
  2. ユニークのユーザー名(この場合はemail-id)のパスワードをsaltとしてSHA256ハッシュを使用します。
  3. ハッシュをbase64に変換し、そのユーザーのverification_keyに保存します。これはユニークなものになるでしょう(実際的な目的のために、私は衝突する可能性はありません)。 key = Base64(Hash256(uniqueUserName+"."+password))

ので、一番下の行、......

サイドノートは:ところで、何もあなたが塩としてパスワードを使用するように制限するものではありません。あなたは、塩として飛行中に任意の文字列を作成することができます。

検証

  1. 我々はverification_keyがユニークである知っているので、リクエストパラメータからkeyを取得し、一致する行を見つけます。
  2. verification_keynullと設定します(衝突する可能性がある場合は、衝突の可能性も低くなります)。ユーザーを「正常に確認されたページ」にします。
  3. 見つからない場合は、ユーザーを「already-activated/key-not-found/401ページ」に移動してください。
+1

こんにちは。これは非常に便利な答えです。あなたの実装からもう一つ知りたい。ユーザーが起動すると、彼は何かをしようとするたびに再度確認する必要はありませんので、私は別のテーブルを持っている必要があります、 "pending_users"と言うので、ユーザーがユーザーテーブルにいる場合、 – arg20

+1

'UUID.randomUUID()'を使用して乱数を生成することができます –

1

アクティブ化URLは、「サービス」要求を処理するソフトウェアサービスの印象を呼び起こします。このサービスを実現するための

良い候補者は、ユーザーの活性化/検証を実行し、私は彼を活性化させるために彼の電子メールIDを確認するために、ユーザーを必要なプロジェクトに取り組んできましたJSF成功-ページへ

+0

サーブレットを実際に使用したことはありません私は本当にそれらを必要として以来、前にjsf2。コードの一部を私に見せてもらえますか? – arg20

関連する問題