Я создал новое приложение Grails 3.2.4. Я создал некоторые объекты домена, контроллеры и службы, а затем получил приложение для компиляции и запуска. Затем я добавил следующую строку в мой build.gradle.Приложение Grails 3.2.4 не загружается после добавления Spring Security Plugin 3.1.1
dependencies {
...
compile "org.grails.plugins:spring-security-core:3.1.1"
...
}
я побежал следующую команду, как указано в the plugin docs.
grails s2-quickstart --uiOnly
я уже пользователь, роль и классы UserRole определены, которые я указал в application.groovy, что эта команда сгенерирована, а также определение:
grails.plugin.springsecurity.active = true
Я также добавил несколько использований тега <sec:ifNotGranted>
к некоторым из моих взглядов.
Насколько я могу судить по документам, я не должен был ничего делать. Свойства Spring Security должны иметь значения по умолчанию, определенные в файле DefaultSecurityConfig.groovy, предоставленном плагином, в соответствии с документами, приведенными выше. Однако приложение даже не запускается. Первая ошибка, что я получил:
groovy.lang.MissingMethodException: No signature of method: static grails.plugin.springsecurity.SpringSecurityUtils.findFilterChainNames() is applicable for argument types: (org.grails.config.NavigableMap$NullSafeNavigator, java.lang.Boolean, java.lang.Boolean, java.lang.Boolean, java.lang.Boolean, java.lang.Boolean, groovy.util.ConfigObject) values: [[:], false, false, false, false, false, [:]]
Possible solutions: findFilterChainNames(java.lang.Object, boolean, boolean, boolean, boolean, boolean, boolean)
at groovy.lang.MetaClassImpl.invokeStaticMissingMethod(MetaClassImpl.java:1503)
at groovy.lang.MetaClassImpl.invokeStaticMethod(MetaClassImpl.java:1489)
at org.codehaus.groovy.runtime.callsite.StaticMetaClassSite.call(StaticMetaClassSite.java:53)
at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:48)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:113)
at grails.plugin.springsecurity.ReflectionUtils.findFilterChainNames(ReflectionUtils.groovy:214)
Я посмотрел в the code where findFilterChainNames is called, и проблема в том, что есть некоторые свойства, которые должны иметь значения булевы по умолчанию либо истинным или ложным (в соответствии с приведенными выше документы), но вместо этого они вообще не определены, в результате чего здесь отображается ошибка. Я подтвердил, что если я сам определяю эти свойства в application.groovy, эта ошибка идет. Однако он заменяется другой ошибкой для следующего неопределенного свойства, с которым запускается код Spring Security, и т. Д. Для каждого свойства, которое я пытаюсь определить сам, хотя мне и не нужно, согласно документам.
Я прошел через the code where the default values from DefaultSecurityConfig.groovy should be merged into the values defined in the application.groovy. Однако, когда DefaultSecurityConfig загружается из пути к классам и анализируется, свойства, которые я вижу в файле, не попадают в возвращаемую конфигурационную карту.
Я не могу понять, что я делаю неправильно, следуя инструкциям в документации. Я пытался искать похожие проблемы в Интернете, но ничего не мог найти. Кто-нибудь есть идеи или кто-то еще сталкивается с этим?
лично никогда не пробовал --uiOnly 'grails s2-quickstart com.yourapp User Role' попробуйте, чтобы увидеть, изменит ли он поведение в любом случае. http://grails-plugins.github.io/grails-spring-security-core/v3/index.html#s2-quickstart Ваш метод действительно не так много документов на нем с этой страницы в любом случае – Vahid
К сожалению, никаких изменений в поведении: – Schmick