ABP理論学習のApp Session

1615 ワード

総ディレクトリに戻る

本編目録

  • 紹介
  • 注入セッション
  • Session属性
  • を使用

    紹介する


    アプリケーションがユーザーにログインを要求する場合、アプリケーションも現在のユーザーが実行している操作を知る必要があります.ASP.NET自体は、プレゼンテーションレイヤにセッションオブジェクトを提供していますが、ABPは、現在のユーザーとテナントを取得する必要がある場所で使用できるIAbpSessionインタフェースも提供しています.

    IAbpSessionについて


    実際のセッション情報を得るためにはIAbpSessionインタフェースを実装する必要がある.独自の方法で実現できますが、module-zeroプロジェクトでは完全に実現されています.
    IAbpSessionはABP(インスタンスの設定システムとライセンスシステム)に完全に統合されている.

    注入セッション


    IAbpSessionの一般的な属性は、Session情報がない限りIAbpSessionが動作しないため、必要なクラスに注入される.属性注入を使用すればNullAppSessionを使用できます.Instanceはデフォルトとして次のようになります.
    public class MyClass : ITransientDependency
    {
        public IAbpSession AbpSession { get; set; }
    
        public MyClass()
        {
            AbpSession = NullAbpSession.Instance;
        }
    
        public void MyMethod()
        {
            var currentUserId = AbpSession.UserId;
            //...
        }
    }
    

    ライセンスはアプリケーション層のことなので、アプリケーション層とより高い層でIAbpSessionを使用することをお勧めします(一般的には分野層では使用しません).ApplicationService,AbpController,AbpApiControllerはAbpSessionに注入されている.したがって、AppSessionプロパティは、アプリケーション・レイヤ・サービス・メソッドで直接使用できます.

    セッション属性の使用


    AppSessionは、いくつかのkey属性を定義します.
  • UserId:現在のユーザのId.値はnullで、現在のユーザーが存在しないことを示します.呼び出したコードがユーザーに許可されている場合、nullの値はありません.
  • TenantId:現在のテナントのId.現在のテナントが存在しない場合はnullです.
  • MultiTenancySide:Host(テナント)かTenant(テナント)かもしれません.

  • UserIdおよびTenantIdはnullable(空)であり、空ではないGetUserId()およびGetTenantId()メソッドも存在する.現在のユーザーが存在すると判断した場合は、GetUserId()を呼び出すことができます.現在のユーザーがnullの場合、このメソッドは例外を放出します.GetTanantId()も同様である.