Справочная информация:
Приложение Grails, которое я разрабатываю, имеет несколько уровней детальной защиты. Сначала наименее гранулированный на уровне контроллера. Либо вы можете просматривать определенную страницу, либо нет (я использую плагин безопасности Acegi spring). Второй уровень безопасности находится на уровне обслуживания с помощью подхода АОП. Вы можете получить доступ к определенному методу службы с помощью переданных атрибутов в зависимости от того, как вы связаны с этим объектом. Третий уровень снова находится на уровне обслуживания и снова облегчается через AOP, который предоставляет рекомендации для метода обслуживания, который затем ограничивает или изменяет то, что возвращается.
Вопрос
Последний уровень, о котором мой вопрос - это уровень отображения. Некоторые пользователи не получают ссылки на определенные страницы или могут просматривать дополнительную информацию. Каков наилучший способ реализовать это? В настоящее время я использую тег taglib безопасности и использую ifAnyGranted или ifAllGranted и т. Д. Прямо в моем gsp. В будущем может возникнуть необходимость иметь более сложные привилегии. Следует ли вернуть эту защиту обратно на контроллер, а затем передать модель, чтобы вы могли сделать что-то вроде <g:if test="${hasSomeViewRight}"></g:if>
?
Я чувствую, что оба пути не очень лаконичны. Есть ли лучший шаблон для этого?