2016-07-13 36 views
0

我寫了我的實現IDbCommandTreeInterceptor來修改基於上下文的查詢。EF DB Interceptor訪問上下文(如當前用戶等)

在我特殊的情況下,我需要訪問攔截器中的用戶對象,以確定用戶可以用查詢的表做些什麼。

這是我實施行級安全的願景。在我的DbInterceptor中,我得到用戶對象,檢查角色並篩選出用戶無權訪問的行。

現在我的問題。

我看了一些文章,並明白DbInterceptors可能運行在另一個線程(不存在相同的HttpContext.Current存在)。

如何實現/組織這種事情?我想訪問上下文(用戶正在請求什麼等)。我正在使用OData WebAPI

+0

在您的數據訪問代碼中訪問HttpContext.Current並不好。也許你可以注入這些信息。 –

回答

0

只爲他人。不要這樣做。永遠。如果你有這樣的問題,這意味着你有壞的建築。 DbInterceptors是完全孤立的,你應該做其他事情。

我通過在DbContext之上添加抽象層來解決我的問題。