2009-12-10 20 views
0

我使用的是內置的帶有asp.net mvc的forms authentication。我使用aspnet_regsql嚮導將所有必要的表添加到了Sql Server中,並且我將它全部集成並且工作完美。現在我可以添加用戶,登錄,執行控制授權和所有這些事情。使用內置表單身份驗證在asp.net mvc中記錄自定義操作

下一步是在用戶執行操作時添加一些基本日誌。例如,我想記錄誰使用用戶管理從數據庫中刪除了用戶,或者是否有人訪問了包含受限信息的視圖(這些僅僅是示例)。

我已經看到,認證來了一個名爲aspnetWebEventEvents的表,但似乎它只是用來存儲在網站上發生的異常,它是用web.config配置的,它都是自動執行的。我想只是調用類記錄的自定義操作,而無需手動填寫所有字段:

Logger.Log("Action performed"); 

並自動存儲用戶,時間和所有這些領域。

我確定必須有一個已經實現的類來完成這個工作,而且我不想重寫已經完成的工作。

我試過使用SqlWebEventProvider,似乎是內部調用的,但這個類似乎是內部的,所以它不打算被使用。

也許我錯了,這是不打算登錄的自定義操作,我應該更好地創建自己的表,自定義操作...

回答

0

我不知道你是否能做到與aspnetWebEventEvents,它聽起來像你想記錄具體的情況,我不認爲這是buld的功能。

您是否嘗試過ActionFilters ?,您可以使用此功能進行特定的日誌記錄,例如,您可以檢查結果類型以查看用戶嘗試使用該操作時發生了什麼,並且您可以通過ActionExecutedContext

public class LogActionFilter : ActionFilterAttribute 
    { 
     public override void OnActionExecuted(ActionExecutedContext filterContext) 
     { 

      if (filterContext.Exception != null) 
      { 
       //Log - Exception Cases 
      } 
      else if(filterContext.Result.GetType() == typeof(RedirectToRouteResult)) 
      { 
       //Log - Redirect to other Action 
      } 
      else 
      { 
       //Log the normal behavior 
      } 
     } 

    } 

然後你剛剛裝修要記錄具有這種屬性的動作:

[LogActionFilter] 
public ActionResult Edit(int id) 
{ 
} 
+0

我終於做到了這樣,但我需要創建一個自定義的表記錄的操作。 – 2010-01-14 13:56:30

相關問題