我编写了IDbCommandTreeInterceptor
的实现,以根据上下文修改查询。
在我的特殊情况下,我需要访问拦截器中的用户对象,以确定用户可以使用已查询的表执行的操作。
我的目标是实现行级安全性。在我的DbInterceptor中,我获取了用户对象,检查角色并过滤掉用户无法访问的行。
现在我的问题。
我阅读了一些文章,并了解DbInterceptors
可能在另一个线程中运行(不存在HttpContext.Current
存在的相同位置)。
如何实施/组织这类事情?我想访问上下文(用户请求的内容等)。
我正在使用OData WebAPI
。
答案 0 :(得分:0)
仅限其他人。不要那样做。永远。如果你遇到这种问题,那就意味着你的架构很糟糕。 DbContext
完全孤立,你应该做其他事情。
我通过在$app->user->checkAccess('uri_my-whatever-access-rights')
之上添加抽象层来解决我的问题。