2017-09-08 2 views
1

理論的に言えば、Auth0のユーザープロファイルIDに基づいて自分のUsersテーブルに固有のIDを保持し、Auth0の返されたデータに基づいてUsersデータベーステーブルを作成したい場合、Auth0のユーザーIDが変更された?その場合、ユーザーIDが変更される状況は何ですか?Auth0ユーザーIDは時間の経過と共に変更できますか?

答えて

1

ここでの簡単な答えは、ユーザーIDは、Auth0の特定のユーザープロファイルの作成後に変更されません。しかし、具体的には、考慮すべきいくつかの他の要因がある:

  • 名前空間は、ユーザーID
  • アカウントリンク

Auth0を効果的名前空間に接続タイプの接頭辞で、フロントユーザIDのを配置しますId部分のみ - これはパイプで行われます。たとえば、auth0|12345またはauth0|MyCustomDB|12345などです。最後のパイプの後の数値だけでなく、userId全体を使用する必要があります。この理由は、Auth0がサービスプロバイダであるIdP/DatastoresのID間で、IDプロバイダではない&が衝突しないようにするためです。

アカウントの接続に関しては、2つの別々のユーザープロフィールがある場合、それぞれに独自のUserIdがあります。あなたがアカウントリンクを行うと、「プライマリ」または「トップレベル」のユーザープロファイルが効果的になり、もう一方のプロファイルは「セカンダリ」のIDとしてサブオーダーされます。また、複数のユーザープロファイルをこのように1つのユーザープロファイルとしてリンクできますが、1つだけがプライマリになります。一貫してリンクのアカウントを設定することができます。たとえば、DB接続がプライマリのままである場合、または最も最近作成されたユーザープロファイル(別のプロファイルに共通の「電子メール」を持つ)をプライマリにすることができます。 「3次」のユーザープロファイルは元のuserIdを保持しますが、ユーザープロファイルのみを照会していても(そのユーザープロファイルのID配列をトラブリングしていない場合)、検索の効果はuserIdが変更されたように見えます。実際には、もともとは「トップレベル」のユーザープロファイルであったものが別の使用プロファイルの中にネストされているためです。

最後に、あなたの元の質問とわずかに直交していますが、if I wanted to base my Users database table on the Auth0 returned dataと書いてありますが、ここでは、Auth0ユーザープロファイルのuserIdをリレーショナルデータベースの主キーとして使用することを望んでいないことを願っています。 代理キー(ビジネス意味/外部依存関係のない一意のキー)を主キーとして作成し、Auth0のuserIdを各タプルの別個の属性として格納する方が良いでしょう。

上記の意味があることを願っていますが、わからない場合は下記のコメントを残してください。

+0

私は現在、主キーとしてUIUDv4代理キーを使用しており、Auth0ユーザーIDを格納する別の列を使用しています。あなたの答えとAuth0ユーザーID /プロファイルの明確な説明に感謝します。 –

+0

マイケル - すべてがいいと思うし、プロジェクトの成功をお祈りします。 – arcseldon

関連する問題