2016-07-13 1 views
0

컨텍스트를 기반으로 쿼리를 수정하기 위해 IDbCommandTreeInterceptor의 구현을 작성했습니다.컨텍스트에 액세스하는 EF DB 인터셉터 (현재 사용자 등)

내 특정 상황에서 사용자가 쿼리 한 테이블로 수행 할 수있는 작업을 결정하기 위해 인터셉터에서 사용자 개체에 액세스해야합니다.

행 수준의 보안을 구현하는 비전입니다. 내 DbInterceptor에서 사용자 개체를 가져 와서 역할을 확인하고 사용자가 액세스 할 수없는 행을 필터링합니다.

내 질문이 있습니다.

일부 기사를 읽었으며 DbInterceptors이 다른 스레드에서 실행될 수 있음을 알고 있습니다 (동일하지 않은 경우 HttpContext.Current이 있음).

이런 종류의 것을 구현하거나 구성하는 방법은 무엇입니까? 컨텍스트 (사용자가 요청하는 항목 등)에 대한 액세스 권한을 갖고 싶습니다.

나는 OData WebAPI을 사용하고 있습니다.

+0

데이터 액세스 코드에서 HttpContext.Current에 액세스하는 것은 좋지 않습니다. 아마도이 정보를 주입 할 수 있습니다. –

답변

0

다른 사람들을위한 것입니다. 그러지 마. 이제까지. 이런 종류의 문제가 있다면, 당신은 나쁜 아키텍처를 가지고 있다는 것을 의미합니다. DbInterceptors은 완전히 분리되어 있으며 다른 것을해야합니다.

DbContext 위에 추상화 레이어를 추가하여 문제를 해결합니다.

관련 문제