Основно защото не беше възможно да се промени със задна дата как работят изгледите. Бих искал да мога да поддържам SECURITY INVOKER
(или еквивалент) за изгледи, но доколкото знам в момента не съществува такава функция.
Можете да филтрирате достъпа до самия изглед със сигурност на реда нормално.
Таблиците, достъпни от изгледа, също ще имат приложени правила за сигурност на редовете. Те обаче ще видят current_user
като създател на изглед защото изгледите имат достъп до таблици (и други изгледи) с правата на потребителя, който е създал/притежава изгледа.
Може би си струва да повдигнете това на pgsql-hackers, ако желаете да се намесите и да помогнете с разработването на функцията, от която се нуждаете, или pgsql-general в противен случай?
Това каза, докато разглежда таблиците за достъп като създаващ потребител и променя current_user
съответно, те не ви пречат да използвате персонализирани GUC, session_user
, или друга контекстуална информация в правилата за сигурност на реда. Можете да използвате защита на редове с изгледи, но не (полезно) за филтриране въз основа на current_user
.