web-dev-qa-db-ja.com

oauth 4つのサービスにログインしてユーザー登録システムを作成しています。ユーザー名の選択はどのように処理しますか?

私の登録システムは通常、4つのことを要求します:ユーザーのフルネーム、電子メール、優先ユーザー名、およびパスワード。

ユーザーがアカウントを簡単かつ迅速に作成できるように、4つのoauth2登録サービスを追加したいと思います。

これを行うための3つの方法を見ることができます。あるいは、私がまだ考え出していないエレガントなものがあるかもしれません。何を選ぶか迷っています。ユーザー名の競合と使いやすさが心配です。

方法1

ユーザーは、4つのサービスの1つを表すボタンをクリックします。彼らは承認を許可することを確認し、ログインします。サーバーで選択されたユーザー名と、ユーザー名が表示されるインターフェイスのどこかに電子メールが届きます。

このスキームでは、データベースとユーザー名の衝突がない場合、サーバーはサービスのユーザー名を選択します。ユーザー名の衝突があるisである場合、サーバーは追加します。ユーザー名に「2」。

方法2

この方法では、クリックして認証し、コールバックURLまたは元のページでユーザー名の入力を求められます。ユーザー名は、サーバーが想定するとおりに事前に入力されています。少し不器用ですが、今では、メールがスパムに送られる場合でも、ユーザー名を知っています

方法

2段階の登録。ユーザーは(1)ユーザー名を選択し、次に(2)次の画面でフルネーム/メール/パスワードを選択するか、oauth2を介してサービスにリンクします。次に(3)リンクを承認します。

観測:

  • 方法1は一般的に最も簡単ですが、ユーザーがユーザー名を紛失したり、ユーザー名を取得/表示/確認したりしないリスクがあります。
  • 方法2は少し扱いに​​くいです。
  • 方法3はかなりクリーンだと思いますが、登録するには2つのステップが必要です。定期登録は実際に長くなりました...
  • 方法3では、暫定的な手順で選択したユーザー名をロックする必要があります。Ifsomeone elseが、手順1で選択したユーザーのユーザー名でユーザーを作成し、手順3にいる場合の場合、サーバーはメソッド#2またはメソッド#1に戻る必要があります。または、ユーザー名はしばらくロックされますが、エッジのケースは残ります。要約すると、方法#3はクリーンですが、他の方法よりもいくつかの手順を実行し、エッジケースがわずかです。

もしあれば、どの方法を選択すべきかについての考え

3
Agamemnus

これは、実際にはシステムの要件と、方法1と方法3の間で選択する負荷によって異なります。

私は、ほとんどの場合、方法1はシステムのユーザーによって不快感を抱くであろうと主張します。ユーザーは、作成されたユーザー名に関して選択できる必要があり、提供するサービス全体で統一されたユーザー名である必要があります(そうでない場合は、登録する理由そもそもあなた)。

方法2はほとんどの場合実装が難しく、多くの不整合が生じる可能性があります。

方法3は、システムの負荷、ユーザーの要件、およびユーザー名のロック時間の調整に実際に依存します。後で維持したり拡張したりするのは難しいと思います。

要約すると、私はあなたに次のことを勧めます:

  • 確定したユーザー名の選択肢をユーザーに提供する

  • このユーザー名をサービス全体で統一します。

この4つのサービスを管理している場合は、同じ順序で登録することで提供できます。衝突の撤回を確認し、ユーザーに別のユーザー名を尋ねます。

そうでなければ、それはおそらく実行不可能であり、ユーザーがシステムと対話する方法によって異なります-サービスから一貫したユーザー名を提供し、マップをサービスの実際の(おそらく生成された)ユーザー名に保存します。

1
nadir

4つのサービスのシングルサインオンを意味しますか。 OAuthの場合、FacebookまたはGoogleのようなものを使用してユーザーを認証し、ユーザーの役割に基づいて4つのサービスのいずれかまたはすべての使用を許可する必要があります。

1
Vasuki Ashok