簡體   English   中英

OWIN Self-Host Web API 2:如何使用Autofac將當前用戶注入通用存儲庫

[英]OWIN Self-Host Web API 2: How to Inject current user into generic Repository using Autofac

我正在構建OWIN自托管Web API 2應用程序,並且使用的是通用存儲庫模式,並使用Autofac進行依賴項注入。

我的通用存儲庫類;

public abstract class Repository<T> : IRepository<T> where T : BaseEntity
{
  private DbContext context_;
  private Identity _currentUser; //This needs to be resolved

  public Repository(DbContext context)
  {
      context_ = context;
  }

  public T Update(T item)
  {
      //item.ModifiedBy = _currentUser.UserName; // The value needs to be assigned
      context_.SaveChanges();
      return item;
  }

}

問題:

我需要訪問當前用戶,並且需要使用ModifiedBy字段更新數據庫。

我試圖避免構造函數注入,因為通過將DbContext作為構造函數參數傳遞,在項目中的多個位置創建了存儲庫對象。

有沒有其他方法可以執行此操作而無需大量修改現有代碼。 誰能幫我實現我的要求。

注意:

另外,我可以重寫DbContext類中的SaveChanges()方法。 但是我仍然無法訪問那里的最新消息。

Thread.CurrentPrincipal.Identity訪問Identity,將其設置為測試設置中的任何值都沒有問題。 Thread.CurrentPrincipal = new ClaimsPrincipal(identity);

已編輯

是的, CurrentPrincipal是可以安全使用的,通常您將創建一些實用程序函數來讀取所需的值。 或者,您當然可以創建自己的抽象,然后將其注入到您的類中,但是我看不到這一點。

順便說一句 通用存儲庫從來都不是明智的選擇(請閱讀DDD)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM