タイトルで問題をきちんと説明できていないと思います。ただし、すべてのテナントが使用する.NET Core WebApiアプリケーションがあります。単一のAPIインスタンスに加えて、すべてのテナントが「ポータル」として使用できる単一のフロントエンドVuejsインスタンスがあります。
これらのテナントにはそれぞれ独自のデータベースがあります。現在、APIはすべてtenant
、リクエストの対象となるテナントを指定するためにリクエスト内のヘッダーを必要とします。これにより、リクエストのテナントに応じてデータベース接続が作成されます。
すべてのAPIはテナントデータベースに対する承認を必要とするため、別のテナントのふりをすることはできません。
私が立ち往生しているのは、単一のフロントエンドvuejsインスタンスを使用してログインするときにユーザーが属するテナントを決定することだと思います。テナントはリクエストのヘッダーを介して送信できるため、APIを使用するだけでは問題ありませんが、サインインによって使用する正しいデータベースを決定するためにテナントを解決する方法がわかりません。すべてのテナントで使用されます。
問題をうまく説明できなかった場合は、お詫びします。これは難しい状況です。
ユーザーはどこに住んでいますか?どのユーザーがどのテナントに属しているかという情報を含む別のIDデータベースにユーザー情報を抽出する必要がある場合があります。これは、Key-Valueストアと同じくらい簡単です:email-> TenantId。したがって、ログインするには、これを検索してからtenantId
、正しいテナントデータベースのユーザー情報に対して認証する必要があります。
または、パスワードハッシュを含む、ユーザーに関するすべての情報を含む単一のデータベースにすべてのユーザー情報をプルすることができます。Auth0やIdentityServerなどのIDプロバイダーを使用することもできますTenantId
。これらには、などのユーザープロパティを追加する機能があります。
どのシナリオを選択する場合でも、ユーザーをテナントにマップする場所を1つにする必要があります。複数のデータベースでユーザー情報を調べるのは理想的ではありません。
Vue.jsアプリがバックエンドAPIを使用している場合は、Cookieまたはその他の方法でTenantIdを設定して、呼び出し間でこの情報を保持できます。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加