2013-06-20 2 views
1

Я пытаюсь получить доступ к Конфигурации приложения grails через аннотацию @Secured весенней безопасности с целью экстернализации имени роли позже.Доступ к Grails Свойства конфигурации в защищенной аннотации

К сожалению, я не смог получить эту работу. Не пытайтесь использовать устаревший класс ConfigurationHolder и не получать ссылку на объект grailsApplication.

import org.codehaus.groovy.grails.commons.ConfigurationHolder as CH 
@Secured([CH.config.grails.app.user]) 
class MyController { ...} 

Config.groovy: 
... 
grails.app.user = "ROLE_APPNAME_USER" 
... 

Есть ли у кого-нибудь совет, как это решить?

EDIT
Наткнулся Burt's article который был информационный.

ответ

4

Вы не можете: значения элементов аннотации должны быть константами времени компиляции, поскольку они разрешены компилятором и сохраняются как часть байт-кода класса.

Возможно, вам удастся использовать один из других механизмов, чтобы указать ограничения безопасности (статические правила или экземпляры экземпляра Requestmap в базе данных) вместо аннотаций.

+1

Не знаю, какие значения аннотации должны быть связаны с временными ограничениями компиляции. Спасибо за информацию. – dmahapatro

+0

Мысль о том, что Grails может перенести константу в аннотацию во время компиляции, заменив константу на String перед запуском компиляции в байтовый код. –

+0

@ MichaelWölm, как и в Java, вы можете использовать все, что является константой _compile-time_, например ссылку на константу 'static final' в классе' src/java', но не то, что можно разрешить только во время выполнения. –

Смежные вопросы