0

私はWebアプリケーションを持っており、私のWebアプリケーションには電子メールを変更する機能があります。これは、ユーザーが電子メールを変更した場合の影響です。

  1. 変更後、メールは自動的にログアウトされ、アクティベーションコードが新しいメールに送信されます。
  2. ユーザーがアクティブ化せずに新しい電子メールでログインしようとすると、電子メールがアクティブ化されていないため、エラーが表示されます。
  3. ユーザーがメールを変更すると、私のデータベースでは、メールが新しいメールで変更され、ユーザーのステータスが1から0に変更されます。1はアクティブですユーザー0はアクティブ化を待機しています。ステータスが1の場合、ユーザーはログインできますが、ステータス0の場合、ユーザーはログインできません。新しい電子メールユーザーに送信されたコードアクティベーションを使用すると、0から1のステータスでアクティベートでき、通常どおりログインできます。

問題は :

  1. ユーザーの新着メールが偽物であるか無効である場合、ユーザーは再度ログインできません。

この問題を解決するためのあなたの提案は何ですか?

ご回答有難うございます。

4

4 に答える 4

1

アクティベーションコード/リンクをクリックした後でのみ、電子メールアドレス(手順3で行っていること)を変更してください。

于 2012-09-27T11:48:10.687 に答える
0

保留中のメール変更のために、新しいテーブル/列を追加する必要があります。そして、プロセスは次のようになります。

  1. ユーザーがメールアドレスを変更すると、サーバーは確認/アクティベーションメールを古いアドレスに送信します。同時に、サーバーは保留中のメール変更属性もユーザーに追加します。ユーザーは引き続き古いメールアドレスでログインする必要があります。

  2. ユーザーは新しいアドレスをアクティブ化しておらず、古いアドレスでログインしています。メールアドレスの変更がまだ保留中であることをユーザーに伝えます。この時点で、ユーザーはメールの変更をキャンセルするか、新しいメールアドレスに移動して新しいアドレスをアクティブ化できます。

2.1ユーザーはログオフし、古いメールアドレスからのメール変更を有効にします。このアクティベーションが完了するまで、ユーザーは古いメールアドレスでシステムにログインする必要があります。

  1. アクティベーション/確認の保留中のメールアドレスがプライマリアドレスになり、保留中の属性がなくなります。ユーザーは古いメールアドレスでログインできません。
于 2012-09-27T11:52:56.343 に答える
0

自動的にログアウトしないでください。必要に応じて、セッションIDを再生成できますが、ログアウトする必要はないと思います。

次に、確認されていない限り、新しいメールアドレスを有効にしないでください。また、電子メールを変更するユーザーは、パスワードの変更を開始する前に、パスワードを再度入力する必要があります。

次に、確認メールを送信します。確認後、ログイン用の新しいメールアドレスを設定してください。

于 2012-09-27T11:51:16.960 に答える
0

次の構造を持つuser_emailsという追加のテーブルを作成します。

email_id
email
user_id current_active
date_added

ユーザーテーブルからメールのデータを移行します。
次に、ユーザーの電子メールを取得する必要がある場合はいつでも、この新しいテーブルで動作するようにアプリケーションを変更します。
そして、ユーザーテーブルにフィールドメールをドロップします。

この後、1人のユーザーに対して複数の電子メールをサポートできるようになります。これは多くの理由で素晴らしいことです。

user_emailsテーブルのフィールドcurrently_activeは、ユーザーが新しい電子メールを確認しなかった場合に限り、一部の電子メールに対してアクティブに設定する必要があります。
確認後、古い電子メールをcurrently_activeに0に設定し、新しい電子メールを1に設定して、ユーザーの電子メールが必要な場合は常にその条件を使用します。

于 2012-09-27T11:55:13.837 に答える