EF DB Interceptor访问上下文(如当前用户等)

时间:2016-07-13 08:39:26

标签: c# entity-framework asp.net-web-api entity-framework-6

我编写了IDbCommandTreeInterceptor的实现,以根据上下文修改查询。

在我的特殊情况下,我需要访问拦截器中的用户对象,以确定用户可以使用已查询的表执行的操作。

我的目标是实现行级安全性。在我的DbInterceptor中,我获取了用户对象,检查角色并过滤掉用户无法访问的行。

现在我的问题。

我阅读了一些文章,并了解DbInterceptors可能在另一个线程中运行(不存在HttpContext.Current存在的相同位置)。

如何实施/组织这类事情?我想访问上下文(用户请求的内容等)。

我正在使用OData WebAPI

1 个答案:

答案 0 :(得分:0)

仅限其他人。不要那样做。永远。如果你遇到这种问题,那就意味着你的架构很糟糕。 DbContext完全孤立,你应该做其他事情。

我通过在$app->user->checkAccess('uri_my-whatever-access-rights') 之上添加抽象层来解决我的问题。