[英]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.