0

マルチテナント アプリケーションでサブドメインとカスタム ルートを使用する方法に関する記事をいくつか読みましたが、私が取り組んでいるプロジェクトには 1 つのドメインしか必要ありません。デフォルトのメンバーシップ プロバイダーを使用し、暗号化されたテナント ID を Cookie に保存しています。

私の質問はコントローラーに関するものです。現在、すべてのアクションの最初の項目が Cookie から TenantID を取得し、それをすべての Linq クエリに渡すように構築中です。代わりにそれをコントローラ クラスの先頭に移動しても安全なので、コントローラ インスタンスごとに 1 回だけ発生しますか? それとも、複数のユーザーが同じコントローラーにアクセスしている場合、データのクロスオーバーが発生する可能性がありますか?

それが可能であることを示唆するこの記事を見つけましたが、確認したいと思います。

例として、これは現在のシステムです。

public class ThisController : Controller
{
    private DBContext db = new ThisContext();

    public ActionResult Index() 
    {
        long tenantid = AuthUser.GetTenantID();
...  

これは私たちが検討しているものです:

public class ThisController : Controller
{
    private DBContext db = new ThisContext();

    private Int64 tenantid = AuthUser.GetTenantID();

    public ActionResult Index()
    {
...

デフォルトの動作についての私の理解では、リクエストごとにコントローラ クラスの新しいインスタンスが作成されますが、先に進む前にそれが正しいことを確認したいと思います。

4

1 に答える 1