<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      ABP理論學習之審計日志

      返回總目錄


      本篇目錄


      介紹

      維基百科說: “審計跟蹤(也叫審計日志)是與安全相關的按照時間順序的記錄,記錄集或者記錄源,它們提供了活動序列的文檔證據,這些活動序列可以在任何時間影響一個特定的操作,步驟或其他”。

      ABP提供了一個基礎設施,它可以自動記錄所有和應用程序交互的日志。它可以記錄具有調用者信息和參數的方法調用。

      一般地,要保存的字段是:相關的租戶Id,調用者的用戶Id,調用的 服務名稱(調用方法的類名),調用的方法名 , 執行方法名(序列化成Json) , 執行時間 , 執行時長(單位毫秒),客戶端IP地址 ,客戶端計算機名稱異常(拋出異常的情況下)。

      有了這些信息,我們不僅知道誰進行了該操作,而且可以測量應用的性能以及觀察拋出的異常。甚至,你可以獲得應用使用情況的統計數據(statistics)

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

      關于 IAuditingStore

      審計系統使用了IAuditingStore來存儲信息。雖然你可以用你自己的方式來實現該接口,但是它已經完全實現在module-zero項目中。如果你沒有實現該接口,那么默認會使用SimpleLogAuditingStore,并且它會將審計信息記錄到日志中(log)。

      配置

      要配置審計,可以在模塊的PreInitialize方法中使用Configuration.Auditing屬性。審計是默認開啟的。可以像下面那樣關閉它:

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

      這兒是審計配置屬性的列表:

      • IsEnabled:用于完全開啟或關閉審計系統。默認為true。
      • IsEnabledForAnonymousUsers:如果此值為true,那么沒有登錄到系統的用戶的審計日志也會保存。默認為false。
      • MvcControllers:用于為ASP.NET MVC控制器配置審計。
        • IsEnabled:用于為MVC控制器開啟或關閉審計。默認為true
        • IsEnabledForChildActions:用于為子MVC action開啟或關閉審計。默認為false。
      • Selectors:用于選擇其他的類保存審計日志。

      可以看到,對于MVC控制器的審計是單獨配置的,因為它用到了不同的技術。

      Selectors是選擇其他的類型來保存審計日志的謂詞列表。一個選擇器有一個唯一的名字和一個謂詞。這個列表中唯一的默認選擇器用于選擇應用服務類。它是如下定義的:

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

      你可以將你的選擇器添加到模塊的PreInitialize方法中。而且,如果你不喜歡為應用服務保存審計日志,那么你可以通過名稱移除選擇器。那就是為什么要有一個唯一名稱的原因(使用簡單的linq找出該選擇器,然后可以移除它)。

      通過特性開啟/關閉

      雖然可以通過配置選擇審計類,但是也可以為一個單獨的類或方法使用AuditedDisableAuditing特性。舉個例子:

      [Audited]
      public class MyClass
      {
          public void MyMethod1(int a)
          {
              //...
          }
      
          [DisableAuditing]
          public void MyMethod2(string b)
          {
              //...
          }
      
          public void MyMethod3(int a, int b)
          {
              //...
          }
      }
      
      

      除了MyMethod2方法之外,MyClass的所有方法都參與審計了,因為MyMethod2顯式關閉了。審計特性可以用于想要參與審計的方法保存審計日志。

      注意

      • 為了保存審計日志,方法必須是public的。私有的和受保護的方法會被忽略。
      • 如果方法是通過類的引用調用的,那么該方法必須是virtual的。因為ABP使用了動態代理和攔截,所以需要滿足該條件。如果使用了接口(比如注入IPersonService接口使用PersonService類)注入,就不必滿足“virtual”的條件了。對于MVC控制器的action不一定要滿足,它們可以不是“virtual”的。

      我項目中的例子

      下面的代碼是點擊登錄按鈕提交表單數據的action方法:

      [HttpPost]
      [UnitOfWork]
      [DisableAuditing]
      public virtual async Task<JsonResult> Login(LoginViewModel loginModel, string returnUrl = "")
      {
          CheckModelState();
      
          _unitOfWorkManager.Current.DisableFilter(AbpDataFilters.MayHaveTenant);
          var loginResult = await GetLoginResultAsync(
              loginModel.UsernameOrEmailAddress,
              loginModel.Password,
              loginModel.TenancyName
              );
          await SignInAsync(loginResult.User, loginResult.Identity, loginModel.RememberMe);
      
          if (string.IsNullOrWhiteSpace(returnUrl))
          {
              returnUrl = Request.ApplicationPath;
          }
          return Json(new MvcAjaxResponse { TargetUrl = returnUrl });
      }
      
      
      

      下面的截圖是數據庫中的審計日志信息,大家可以看到今天還沒有數據,最晚的數據是2015-12-18的數據:

      登錄系統之后,依然沒有記錄審計日志,下面統一截圖。

      下面我將上面的代碼的特性[DisableAuditing]去掉,再次登錄系統,可以看到有了審計記錄,截圖如下:

      分別按序號解釋一下:

      1. 首次到達登錄頁面;
      2. 登錄成功,到達系統首頁Index;
      3. 去掉[DisableAuditing]特性后,到達登陸頁面;
      4. 將數據post提交到Login方法,記錄了審計日志,包含各種登錄參數;
      5. 登錄成功,返回系統首頁Index。

      從我的例子可以很明顯地看出,默認情況下,ABP會自動記錄所有的控制器,除非你給它加上[DisableAuditing]特性,否則,始終會記錄審計日志。

      posted @ 2015-12-21 13:45  tkbSimplest  閱讀(14620)  評論(2)    收藏  舉報
      主站蜘蛛池模板: 日夜啪啪一区二区三区| 免费无码无遮挡裸体视频在线观看 | 97视频精品全国免费观看| 在线视频精品中文无码| 在线看av一区二区三区| 亚在线观看免费视频入口| 呻吟国产av久久一区二区| 久久综合亚洲色一区二区三区| 午夜视频免费试看| 九九在线精品国产| 少妇人妻系列无码专区视频| 日本熟妇人妻一区二区三区| 日本精品不卡一二三区| 熟妇无码熟妇毛片| 亚洲成人av在线资源| 99精品国产在热久久婷婷| 亚洲国产成人久久精品软件| www夜插内射视频网站| 无码日韩精品一区二区三区免费| 欧洲中文字幕一区二区| 老熟妇性老熟妇性色| 国产福利精品一区二区| 亚洲激情一区二区三区在线| 久久不卡精品| 一面膜上边一面膜下边视频| 亚洲精品国产精品不乱码| 国产精品久久久久久久久软件| 亚洲av永久无码精品网站| 国产一区二区三区小说| 国产一区二区精品自拍| 国产精品入口中文字幕| 中文字幕在线视频不卡一区二区| 日韩女同在线二区三区| 安溪县| 久久天天躁狠狠躁夜夜不卡| 亚洲一区在线成人av| 精品国产亚洲第一区二区三区| 日本一区二区三区后入式| 亚洲午夜无码久久久久蜜臀av| 亚洲乱妇熟女爽到高潮的片| 日本内射精品一区二区视频|