Witam,
w bazie danych ma możliwość określenie dostępu na poziomie rekordu. W skrócie wygląda to tak, że w zależności od zalogowanego użytkownika wynik wykonanego takiego samego zapytania będzie różny (zostaną zwrócone rekordy tylko te do których zalogowany użytkownik ma prawa). Teraz chciałbym wykorzystać ten mechanizm w aplikacji webowej, tzn. chciałbym pobrać użytkownika z security, otworzyć nim połączenie do bazy i wykonać zapytanie.

Wydaje mi się, że takie podejście na poziomie bazy rozwiąże problem: "do jakich zasobów ma dostęp zalogowany użytkownik". Normalnie w bazie musiałby tworzyć jakieś połączenia pomiędzy tabelą użytkowników oraz innym tabelami i przy każdym zapytaniu pamiętać o where userId=?. Przy moim podejściu po prostu robię select * from table i załatwione.

Mam problem jak zalogować user do bazy. Po pierwsze jak i gdzie trzymać hasło do logowania w bazie (login/nazwę użytkownika można wykorzystać z security). Można byłoby wykorzystać to z security, ale ono jest zahashowane. Po drugie zazwyczaj do połączenia z bazą wykorzystuje się pulę i czy takie otwieranie i zamykanie połączenie per request nie wydłuży czasu response' a.
Tak się zastanawiam czy nie podchodzi to pod rozwiązanie multi tenant, tylko w takich przypadkach chyba stawia się drugą instancję bazy danych lub np. robi schemat. Może ktoś ma pomysł jak to rozwiązać lub wiem czy są jakieś sprawdzone podejścia do tego problemu.

Może dodam że chodzi mi o bazę orientdb (http://orientdb.com).

Z góry dzięki wszystkim za pomoc.