2017-07-20 125 views
0

我正在構建OWIN自託管Web API 2應用程序,並且使用通用存儲庫模式並使用Autofac進行依賴項注入。OWIN Self-Host 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作爲構造函數參數在項目中的幾個地方創建存儲庫對象。

是否有其他方法可以在不修改現有代碼的情況下做到這一點? 任何人都可以幫助我實現我的要求。

注:

備選地我可以重寫的SaveChanges中的DbContext類()方法。 但我再次無法訪問當前那裏。

回答

1

身份是從Thread.CurrentPrincipal.Identity訪問,沒有任何問題設置爲任何在測試設置例如。 Thread.CurrentPrincipal = new ClaimsPrincipal(identity);

編輯

CurrentPrincipal使用安全,你通常會創建一些實用程序功能讀出你需要的值。或者你當然可以創建自己的抽象,並將其注入到你的類中,但我沒有看到這一點。

btw。通用的存儲庫永遠不是明智的選擇(在DDD上閱讀)。

+0

你能解釋這一點嗎?我應該在哪裏從控制器調用它?或者我可以在ActionFilter中設置?這種方法是否安全? – Rahul

+0

@Rahul你打算如何驗證和授權你的用戶? –

+0

是的,我正在使用JWT令牌認證,現在我需要訪問Repo中不知道當前請求的用戶信息。 – Rahul

相關問題