2016-07-13 4 views
0

Ich schrieb meine Implementierung von IDbCommandTreeInterceptor, um Abfragen basierend auf dem Kontext zu ändern.EF DB Interceptor Zugriff auf Kontext (wie aktuelle Benutzer und so weiter)

In meiner speziellen Situation muss ich auf Benutzerobjekt im Interceptor zugreifen, um zu bestimmen, was ein Benutzer mit Tabelle tun kann, die abgefragt wurde.

Es ist meine Vision der Implementierung von Sicherheit auf Zeilenebene. In meinem DbInterceptor bekomme ich das Benutzerobjekt, suche nach Rollen und filtere Zeilen aus, auf die ein Benutzer keinen Zugriff hat.

Jetzt meine Frage.

Ich lese einige Artikel und verstehe, dass DbInterceptors in einem anderen Thread (nicht in der gleichen HttpContext.Current vorhanden) ausgeführt werden kann.

Wie implementieren/organisieren Sie diese Art von Dingen? Ich möchte Zugriff auf den Kontext haben (welcher Benutzer anfragt usw.).

Ich verwende OData WebAPI.

+0

Es ist nicht empfehlenswert, in Ihrem Datenzugriffscode auf HttpContext.Current zuzugreifen. Vielleicht können Sie diese Information injizieren. –

Antwort

0

Nur für andere. Tu das nicht. Je. Wenn Sie ein solches Problem haben, bedeutet das, dass Sie eine schlechte Architektur haben. DbInterceptors sind völlig isoliert und Sie sollten etwas anderes tun.

Ich löse mein Problem, indem ich Abstraktionsschicht auf DbContext hinzufüge.

Verwandte Themen