1. 程式人生 > >ABP官方文檔翻譯 4.6 審計日誌

ABP官方文檔翻譯 4.6 審計日誌

anti onf virt 註入 for 目錄 術語 保存 獲得

審計日誌

  • 介紹
    • 關於IAuditingStore
  • 配置
  • 通過特性啟用/禁用
  • 註意事項

介紹

  維基百科:“審計追蹤(也稱為審計日誌)是與安全相關的按時間先後的記錄、記錄集合、記錄的目的地和源,提供一系列活動的紀實證據,這些活動可能在任何時刻影響一個特定操作、過程或事件。”

  ABP提供了基礎設施自動記錄應用所有的交互。它可以記錄方法調用的調用者和參數。

  基本上,保存的字段有:相關的tenant id,調用者user id,調用者service name(調用方法的類),調用者method name,執行parameters(序列化為JSON),執行時間

,執行時長(毫秒級),客戶端IP地址,客戶端計算機名稱異常(如果方法拋出異常)。

  有了這些信息,我們就可以知道誰執行了這個操作,也可以衡量應用的執行性能和檢查拋出的異常。還可以得到你的應用的使用統計。

  審計系統使用IAbpSession獲得當前的UserId和TenantId。

  應用服務、MVC控制器、Web APID和ASP.NET Core方法默認自動審計。

關於IAuditingStore

  審計系統使用IAuditingStore保存審計信息。你可以用自己的方式來實現這個接口,但在module-zero工程中已完全實現。如果你沒實現它,可以使用SimpleLogAuditingStore,它會把審計信息寫到日誌中。

配置

  要配置審計,可以在模塊的PreInitialize方法中使用Configuration.Auditing屬性。審計默認是啟用的。可以按如下的方式禁用:

public class MyModule : AbpModule
{
    public override void PreInitialize()
    {
        Configuration.Auditing.IsEnabled = false;
    }

    //...
}

  這裏有審計配置屬性的列表:

  • IsEnabled:用來完全啟用或禁用審計系統。默認為:true。
  • IsEnabledForAnoymousUsers:如果設置為true,對那些沒有登錄到系統的用戶也會保存審計日誌。默認為:false。
  • Selectors:用來選擇其他類保存審計日誌。

  Selectors是一個術語列表用來選擇其他類型保存審計日誌。一個selector有一個唯一的名稱和一個術語。默在這個列表中唯一的默認selector用來選擇應用服務類。它的定義如下所示:

Configuration.Auditing.Selectors.Add(
    new NamedTypeSelector(
        "Abp.ApplicationServices",
        type => typeof (IApplicationService).IsAssignableFrom(type)
    )
);

  可以在模塊的PreInitialize方法中添加selectors。如果你不喜歡應用服務保存審計日誌,可以通過名稱移除selector。這就是有一個唯一名稱的原因(如果你想的話,可以使用簡單的LINQ在selectors中查找selector並移除它)。

  註意:除了標準的審計配置,MVC和ASP.NET Core模塊定義了配置來啟用或禁用方法的審計日誌。

通過特性啟用/禁用

  你可以通過配置,選擇需要審計的類,你也可以給一個類、方法使用Audited和DisableAuditing特性來達到目的。示例:

[Audited]
public class MyClass
{
    public void MyMethod1(int a)
    {
        //...
    }

    [DisableAuditing]
    public void MyMethod2(string b)
    {
        //...
    }

    public void MyMethod3(int a, int b)
    {
        //...
    }
}

  MyClass的所有方法都會被審計,除了MyMethod2,因為它顯示禁用了。Audited特性可以用於一個方法,這樣就可以只給想要審計的方法進行審計了。

  DisableAuditing可以用於DTO的一個屬性。因此,你可以在審計日誌裏隱藏敏感輸入,如密碼。

註意事項

  • 為了保存設計日誌,方法必須為public。Private和Protected方法會被忽略。
  • 如果通過類引用調用,方法必須為virtual。如果使用它的接口(如註入IPersonService接口來使用PersonService類)註入,這就不要了。因為ABP使用動態代理和來接,所以這是需要的。對於MVC控制器方法,這不是真的。他們不能為virtual。

返回主目錄

ABP官方文檔翻譯 4.6 審計日誌