5

私の質問はこれとほとんど同じです

唯一の違いは、ユーザーに登録するオプションがあることです (ユーザー名とパスワードを提供します)。ユーザーが同じメールアドレスを持っている場合、ユーザーはアカウントを 1 つだけ登録する必要があります。私のアプリケーションには、Facebook 経由でログインする別の方法があります。

私が基本的にやっていることは、

  • ユーザーが初めてサイトにアクセスすると、サードパーティの ID レコードが作成された後、ユーザー名、パスワード、およびメール アドレスのみを持つユーザー アカウントが作成され、ローカル アカウントとペアになります。ユーザー テーブルには空のユーザー名とパスワードが含まれますが、電子メールには、サード パーティのサービス プロバイダーから取得したユーザーの電子メールが入力されます。

そして第二のシナリオ

  • ユーザーはサイトへの登録を試みます。電子メールが存在する場合、電子メールが存在するかどうかを確認しますが、それはサードパーティのアカウントを使用して登録されています. ユーザーが入力したフォームを使用して、サードパーティのアカウントとペアになっているユーザーアカウントに挿入します. つまり、ユーザーの電子メールがデータベースに存在する場合.ローカルで作成されたアカウントとサードパーティのアカウントを統合しました。

私の質問は、私のアプローチは安全で信頼できるものですか? アカウントを統合する最善の方法ではない場合、同時にユーザーが同じ電子メール (サード パーティのアカウントからのメール) で登録し、サード パーティのアカウントを持っている場合、それらのアカウントは統合されますか?

4

3 に答える 3

3

ログイン時の動作とログアウト時の動作の 2 つのセットを提供します。

ログインすると、新しいサードパーティ アカウントにリンクする機能が提供されます。たとえば、メールアドレスとパスワードでサインアップしてからログインすると、Facebook アカウントをリンクできます。Facebook アカウントをリンクするには、Facebook で認証し、Facebook 情報をそのユーザー アカウント レコードに保存します。

ログアウトするときは、既存の認証情報でログインする必要があります。ログアウト時に既存のメール アドレスでアカウントを作成しようとすると、「そのメール アドレスのアカウントは既に存在します」と言ってログインを阻止するか、すぐにユーザーにログインしてアカウントを統合するように要求します。 (この場合、認証操作の順序が逆になるだけで、外部アカウントをリンクするときのログインの場合と同じように機能します)。

上記から明らかでない場合は、単一のユーザー アカウントと、そのアカウントと外部アカウント間のリンクを記録する方法を用意することをお勧めします。ユーザー ドキュメントにフィールドを追加するだけで、NoSQL 購入でこれを行うことができます。または、ユーザー ID にリンクする外部キーを持つ外部アカウントを表すテーブルを使用して、リレーショナルに行うこともできます。

于 2013-04-27T23:32:39.907 に答える
-1

oAuth 2.0 を使用しないように注意してください。1.0 バージョンほど安全ではないため、筆頭著者自身が辞任しました

oAuth 1.0 または OpenID を優先する必要があります。

Mozilla の Persona もご覧ください。

于 2013-05-01T08:42:49.300 に答える