
このセクションでは、アプリケーションの異なるログインメソッドでユーザーが複数のアカウントを作成できないようにすることを調査します。
主要な考慮事項:
ソーシャルログインは、ユーザーがアカウントを重複させるリスクを高め、イライラする経験です。 これは、手動または自動アカウントの合併を介して軽減できます。
マニュアルマージにより、ユーザーは追加のソーシャルネットワークを既存のアカウントに接続できます。 「接続」ボタンがソーシャルネットワークログインプロセスを開始します。ソーシャルネットワークIDが- テーブルに既に存在する場合、重複するアカウントが削除され、
レコードは現在のユーザーにリンクされています。
- 自動マージは、ソーシャルネットワークユーザープロファイルを接続の直後に既存のユーザーと比較します。メールアドレスは良い出発点ですが、すべてのネットワークがそれらを提供しているわけではなく、このアプローチの有効性を制限します。
user_provider
セキュリティの脆弱性を回避するには、ログインとマージの間に検証ステップを追加します。潜在的な一致が見つかった場合は、ユーザーが元のログイン方法を使用して再認証する必要があります。成功した再認証は、マージする前にユーザーの身元を確認します。 これにより複製が最小限に抑えられますが、一部はまだ残っている可能性があります
user_provider
- アカウントの合併:
-
さまざまなソーシャルネットワークと標準的な登録システムを介してサインアップを許可すると、アカウントが重複する可能性が高まります。 ユーザーは最初にFacebookを介して登録し、後で既存のアカウントを知らずにTwitterを使用してログインしようとする場合があります。 これは、手動または自動マージを使用して対処できます
データベースのセットアップ:
2つのテーブルが推奨されます:一般
テーブルと
テーブル。
テーブルはサードパーティのログインを追跡します:
user
user_provider
ソーシャルネットワーク名(例えば、Google)を保存し、ネットワークのユーザーIDを保存します。
1 2 3 4 5 6 7 8 9 10 11 12 | CREATE TABLE IF NOT EXISTS `user` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`username` varchar(255) NOT NULL,
`password` varchar(255) DEFAULT NULL,
`firstname` varchar(50) NOT NULL,
`lastname` varchar(50) NOT NULL,
`emailaddress` varchar(50) NOT NULL,
`city` varchar(50) NOT NULL,
`birtdate` date NOT NULL,
`gender` varchar(10) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
|
ログイン後にコピー
マニュアルアカウントの合併:
user_provider
デフォルトシステムを使用してGoogleを介して登録され、後に登録されたユーザーが、2つのエントリと1つのエントリが存在します。 ユーザーは追加のソーシャルネットワークを接続できます。 「接続」ボタンがソーシャルネットワークログインを開始します。 システムは、ソーシャルネットワークIDが
1 2 3 4 5 6 7 | CREATE TABLE IF NOT EXISTS `user_provider` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`user_id` int(11) COLLATE utf8_unicode_ci NOT NULL,
`provider` varchar(50) COLLATE utf8_unicode_ci NOT NULL,
`provider_uid` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=1 ;
|
ログイン後にコピー
にあるかどうかを確認します。一致が見つかった場合、重複アカウントが削除され、
レコードが現在のユーザーにリンクされます。それ以外の場合は、新しいprovider
レコードが追加されています。 マージする前に、ユーザーに確認を求めることを検討してください。 関連するコンテンツを複製アカウントからマージすることを忘れないでください。 デフォルトシステムを介して登録されている既存のアカウントとマージする場合は、ユーザー名とパスワード検証を要求します。
自動アカウントの合併:
自動マージは、取得したソーシャルネットワークプロファイルを既存のユーザーと比較します。 電子メールアドレスは良い初期チェックですが、一部のネットワークに不在はこのアプローチを制限します。 他のプロファイルフィールド(生年月日、場所など)を組み合わせると、一致する精度が向上しますが、セキュリティリスクが導入されます。 検証ステップは重要です。潜在的な一致の後、元のログインメソッドを介して再認証を必要とし、マージする前にユーザーのIDを確認します。
結論:
このシリーズは、フレームワークに依存しないパッケージの作成、Googleを使用したソーシャルログインの実装、およびアカウントの合併テクニックをカバーしました。 将来の記事は、追加のソーシャルネットワークの統合について拡大します。 フィードバックは大歓迎です。
よくある質問(FAQ):
(元のFAQは、関連性があり、全体的なコンテンツに価値を追加するため、保持されます。
(元のFAQSセクションは、記事への貴重な追加であり、書き直す必要がないため、ここに含まれています。)
以上がソーシャルネットワーク認証:アカウントの合併の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。