Вопрос

У меня есть довольно сложный механизм безопасности, который я реализовал с помощью Apache Shiro (ранее JSecurity).Чтобы узнать точные правила видимости для объекта, мне нужно запустить некоторый код (т.е.поиск ролей пользователей, разрешений, групп и т.д.).Я бы хотел запускать запросы, которые сообщают мне объекты, которые текущий пользователь имеет право видеть.

Я обнаружил, что фильтры гибернации дают вам возможность применять фильтр к вашим объектам / запросам, и, похоже, это то, что я мог бы использовать здесь.

Однако примеры, которые я нашел, похоже, сосредоточены на базе данных (т.е.допустим, у меня есть поле / столбец isVisible, фильтруйте всякий раз, когда для него установлено значение true).Есть ли способ, которым я могу запустить какой-нибудь код в качестве фильтра гибернации, или это просто тонкий слой, который добавляет небольшое предложение WHERE ко всем вашим запросам.

На самом деле я использую это внутри инфраструктуры Grails / GORM, так что, возможно, есть какие-то другие приемлемые решения.A плагин существует это интегрирует фильтры гибернации, но если я не смогу использовать это с каким-либо кодом для запуска как часть процесса фильтрации гибернации, это мне здесь не очень поможет.

Это было полезно?

Решение

К сожалению, фильтры гибернации не решат вашу проблему.Они могут быть очень полезны, но это всего лишь тонкий слой, который добавляет небольшое предложение WHERE к каждой выборке.

Поскольку вы используете Grails, вы можете обнаружить, что AOP даст вам то, что вы ищете.Взгляните на это: http://www.infoq.com/articles/aop-with-groovy

Удачи.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top