登録/認証が必要なWebアプリを作成しており、唯一のユーザーIDとしてメールアドレスを使用することを検討しています。これが私が賛否両論として見ているものです(応答で更新されました):
[〜#〜]プロ[〜#〜]
登録時に入力するフィールドが1つ少なくなります(メールアドレス、パスワード、パスワードの確認だけです)。私はミニマルな登録の大ファンです。
お気に入りのユーザー名がすでに使用されていることを心配する必要はありません。メールアドレスを使用するのはあなただけです。 (ありがとう TStamper )
[〜#〜]短所[〜#〜]
ユーザーは、ログインするたびにさらに入力する必要があります。
ユーザーが複数のアカウントを必要としている場合はどうなりますか?別のメールアドレスが必要になります。 (ユーザーが複数のアカウントを作成できるようにすることもできますか?)
潜在的な攻撃者が推測しやすい(ターゲットの電子メールアドレスを知っている場合は、ログインIDを知っている)。 (ありがとう Vasil )
ユーザーは、電子メールアカウントに使用しているのと同じパスワードを使用したくなる可能性があり、これはセキュリティが悪いです。 (ありがとう トーマス )
電子メールアドレスを頻繁に変更する場合、長い休止の後にサイトにサインアップするために使用したアドレスを思い出すのが難しい場合があります。 (ありがとう ソフトウェアモンキー )
ハッカーは登録フォームをスパムし、「すでに受信した電子メール」の応答を使用して、有効な電子メールのリストを生成する可能性があります。 (ありがとう デビッド )
誰もがメールアドレスを持っているわけではありません。 (ありがとう ニコラス )
電子メールをIDとして使用した場合、ユーザーがアドレスを変更した場合に電子メールを変更できるようにするメカニズムを提供します。この場合、ユーザーは公開サイトにコンテンツを投稿しないため、電子メールアドレスを保護するために別のユーザー名は必要ありません(ただし、他のサイトでは考慮する必要があります)。
もう1つのオプションは、OpenIDを実装することです(これはまったく別の議論です)。
これはGoogleにとってはうまくいくようですが、それらのサービスは緊密に統合されています。分析で何を見逃しましたか?何かお勧めはありますか?誰かが共有する経験がありますか?
最終編集
ご回答ありがとうございます。メールをIDとして使用することにしましたが、登録後にログイン用のユーザー名の作成を許可します。これにより、登録をできるだけ短くしながら、少し柔軟性を持たせることができます。また、ユーザーが電子メールアドレスを変更したときの問題を防ぎます(ユーザーはユーザー名でログインして更新するだけです)。また、登録およびログインシステムからの電子メールアドレスのブルートフォースを防止する方法を実装します(主に、繰り返し試行した後のクールダウン期間)。
私は賛否両論のリストを好まない傾向があり、代わりに利点と課題を考えようとします。
チャレンジ:
一部のユーザーは、ISPからの電子メールアドレスを使用したくなるでしょう。メールだけにリンクすることは、ISPを変更する前にサインアップしたすべてのWebサイトでメールを更新するのを忘れたユーザーにとっては難しいかもしれません。
代わりに:
ユーザーが複数のアドレスとユーザーが選択したIDを提供できるようにしてから、ユーザーがやりたいことを決定できるようにすることを検討する必要があります。おそらく、ユーザーがOpenIDアカウントを提供できるようにすることも検討してください。
個人的には、自分のメールアドレスをユーザー名として使用することを好みます。覚えておくべきことが1つ少なくなり、自分の好みの名前がすでに使用されていることを心配する必要はありません。
ちょうど私の2セント!
私はあなたがPROを逃したと思います:
ユーザーは自分のメールアドレスを覚えている可能性があります。また、電子メールアドレスは一意であるため、優先ユーザー名がすでに使用されていることを心配する必要はありません。
[〜#〜] cons [〜#〜]
ウェブサイトのユーザーとして、私は不必要なユーザー名を覚えるのが嫌いだと言うことができます。一意のハンドルなどを使用していないので、使用した名前のバリエーションのうち、まだ使用されていないものを思い出せません。メールアドレスを入力したいです。
また、OpenIDも好きです。
CON:誰もが電子メールアドレスを持っているわけではありません。データベースが内部アプリケーションによってアクセスされたことがあるかどうかを検討してください。あなたが店を経営しているなら、人々will電話で電話して注文し、電子メールアドレスを提供することを拒否します。したがって、デフォルトのユーザーIDとして電子メールアドレスを使用するのは便利ですが、代替ユーザーがシステムにアクセスできるようにしてください。 (もちろん、これはコンテキストによって異なります。)
これを難しい方法で学びました。
検討したいセットアップの1つ:ユーザー名と電子メールの両方を用意します。電子メールはログインに使用され、常に非公開にされます。ユーザー名は、コメントの投稿などの公開インタラクションでユーザーを識別するために使用されます。ユーザーのログイン資格情報の両方の半分が非公開に保たれるため、最終的には少し安全になりますが、ログインとパブリックIDの両方にユーザー名を使用する場合、ログインの半分はすでに認識されています。
ほとんどの場合、最小限の登録を行うことについては間違いなく同意しますが、実行している内容によっては、ユーザーのセキュリティを強化することとバランスを取ることをお勧めします。 4つのフィールド(ユーザー名、電子メール、パスワード、パスワードの確認)は登録に問題はありません。特に冒険心がある場合は、パスワードの確認フィールドを削除して3つに、パスワードを電子メールで送信することで2つに減らすことができます。後で変更できること。
[〜#〜] pro [〜#〜]
人々は、自分のIDに一致し、サイトへの登録にまだ使用されていない一意の名前を作成する必要があることを嫌います。そのため、EMAIL ADDRESSとしてのユーザーIDが非常に受け入れられています。
ex:TStamper1930、私が本当に欲しかった私の名前の最後にある1930を実際に覚えておきたい
CON:ハッカーがランダムな電子メールアドレスをまとめて登録しようとすると、どの登録が失敗したかに基づいて、それらのアドレスのどれが有効であるかを判断できます。これは、スパムブラックマーケットで人気のある商品である既知の有効な電子メールアドレスのリストをまとめるために使用できる戦術です。
今考えてみると、別のユーザー名があるかどうかに関係なく、登録プロセスの一環としてメールアドレスを要求するWebサイトに影響する問題です。しかし、それはまだ考えるべきことです。
CON:メールアドレスを変更すると、突然すべてのアカウント名が無効になります。私の名前は変わりませんが、私のメールはよく変わります。数年後に時々サイトを再訪し、行き詰まりました... 2年前の私のメールアドレスは何でしたか?
どこでも使用されているメールアドレスに固執します。実際、ほとんどの主要なWebサイトで使用されています。これらは一意であるため、他のユーザーが使用していない名前を見つけるのに苦労することはありません。また、ユーザーはメールアドレスを忘れません(ほとんどの場合)少なくとも:))。これは、ユーザー名とは異なり、サイトに頻繁にアクセスしないと忘れてしまいます。
すべての主要なブラウザ(IE、FFなど)がデフォルトで有効になっているフォームにオートコンプリートを提供しているので、長すぎることを心配する必要はありません。そのため、メールに最初の文字を入力すると、ドロップダウンリストが表示されます。 (つまり、オートコンプリートリスト)クリックしてメール全体を入力するだけです。個人的には、メールアドレスを完全に入力することはほとんどありません。常に最初の文字を入力してから、オートコンプリートのドロップダウンリストからメールを選択します。さらに、ユーザーの記憶を許可する場合([記憶する]チェックボックスと永続的なCookieを使用)、それを心配しないもう1つの理由になります。
あなたのアプリについてはわかりませんが、通常、複数のアカウントを持つユーザーはほとんどのアプリで望ましくありません。
1つの欠点は、それが電子メールアドレスである場合、ログインは人々によって推測され、ブルートフォース攻撃が試みられる可能性があるということかもしれません。今日のほとんどのサイトではログインが公開されているため、これはそれほど大きな問題ではありません。
最大の利点は、ログインがこの方法で覚えやすいことです。
適切な設定は、ユーザー名と電子メールを要求することです。ユーザーが電子メールアドレスまたはユーザー名のいずれかでログインできるようにすることは、非常にユーザーフレンドリーです。追加の利点は、ユーザーが自分の電子メールアドレスを変更できることです。また、1つの電子メールに複数のアカウントを許可します。
毎回入力するには長すぎるメールの詐欺項目を解決するため。 StringScan Rubyライブラリを実装しました。
require 'strscan'
def signup!(user, &block)
self.email = user[:email] unless user[:email].blank?
str = StringScanner.new(self.email)
str.scan_until(/@/)
str.pre_match
self.login = str.pre_match
等..
次に、ログイン方法を変更して、電子メールまたはログインのいずれかがパスワードと一致するようにします。
これは、googleやmobilemeと同じように機能します。ユーザーは、メールのユーザー名(つまり、username @ gmail.comではなくusername)を入力することを選択できます。
Facebookやその他のソーシャルネットワークを使用してユーザーにアプリケーションへのログインを強制する必要がない場合(ほとんどの人は気にしないようです)、参照するときにソーシャルネットワークの電子メールを「ユーザーID」として使用できます。他のテーブル/ドキュメント(MySQL、Mongoなど)。
ソーシャルメディアログインを使用することの利点は、2人のユーザーがデータベースに同じ電子メールまたはユーザー名を持つことを許可しないことを含め、すべてのセキュリティがソーシャルネットワークによって処理されているため、コーディングの手間が省けることです。そのすべてのために。これは私の個人的な好みです。