【问题标题】:Spring Security Core Plugin 2.0-RC2 upgrade issue?Spring Security Core Plugin 2.0-RC2 升级问题?
【发布时间】:2014-04-10 20:43:58
【问题描述】:

我有一个 grails 项目,我刚刚将 Spring Security Core 插件升级到最新版本,但是在尝试运行应用程序时收到以下消息:

| Error Compilation error: startup failed:
Compile error during compilation with javac.
/home/dev/.grails/2.1.0/projects/app/plugins/spring-security-ldap-1.0.6/src/java/org/codehaus/groovy/grails/plugins/springsecurity/ldap/DatabaseOnlyLdapAuthoritiesPopulator.java:20: cannot find symbol
symbol  : class GrailsUserDetailsService
location: package org.codehaus.groovy.grails.plugins.springsecurity
import org.codehaus.groovy.grails.plugins.springsecurity.GrailsUserDetailsService;
                                                        ^
/home/dev/.grails/2.1.0/projects/app/plugins/spring-security-ldap-1.0.6/src/java/org/codehaus/groovy/grails/plugins/springsecurity/ldap/DatabaseOnlyLdapAuthoritiesPopulator.java:37: cannot find symbol
symbol  : class GrailsUserDetailsService
location: class org.codehaus.groovy.grails.plugins.springsecurity.ldap.DatabaseOnlyLdapAuthoritiesPopulator
    private GrailsUserDetailsService _userDetailsService;
            ^
/home/dev/.grails/2.1.0/projects/app/plugins/spring-security-ldap-1.0.6/src/java/org/codehaus/groovy/grails/plugins/springsecurity/ldap/DatabaseOnlyLdapAuthoritiesPopulator.java:71: cannot find symbol
symbol  : class GrailsUserDetailsService
location: class org.codehaus.groovy.grails.plugins.springsecurity.ldap.DatabaseOnlyLdapAuthoritiesPopulator
    public void setUserDetailsService(final GrailsUserDetailsService service) {
                                            ^
/home/dev/.grails/2.1.0/projects/app/plugins/spring-security-ldap-1.0.6/src/java/org/codehaus/groovy/grails/plugins/springsecurity/ldap/GrailsLdapAuthoritiesPopulator.java:20: cannot find symbol
symbol  : class GrailsUserDetailsService
location: package org.codehaus.groovy.grails.plugins.springsecurity
import org.codehaus.groovy.grails.plugins.springsecurity.GrailsUserDetailsService;
                                                        ^
/home/dev/.grails/2.1.0/projects/app/plugins/spring-security-ldap-1.0.6/src/java/org/codehaus/groovy/grails/plugins/springsecurity/ldap/GrailsLdapAuthoritiesPopulator.java:36: cannot find symbol
symbol  : class GrailsUserDetailsService
location: class org.codehaus.groovy.grails.plugins.springsecurity.ldap.GrailsLdapAuthoritiesPopulator
    private GrailsUserDetailsService _userDetailsService;
            ^
/home/dev/.grails/2.1.0/projects/app/plugins/spring-security-ldap-1.0.6/src/java/org/codehaus/groovy/grails/plugins/springsecurity/ldap/GrailsLdapAuthoritiesPopulator.java:147: cannot find symbol
symbol  : class GrailsUserDetailsService
location: class org.codehaus.groovy.grails.plugins.springsecurity.ldap.GrailsLdapAuthoritiesPopulator
    public void setUserDetailsService(final GrailsUserDetailsService service) {
                                            ^
/home/dev/.grails/2.1.0/projects/app/plugins/spring-security-ldap-1.0.6/src/java/org/codehaus/groovy/grails/plugins/springsecurity/ldap/GrailsLdapUserDetailsManager.java:3: cannot find symbol
symbol  : class GrailsUserDetailsService
location: package org.codehaus.groovy.grails.plugins.springsecurity
import org.codehaus.groovy.grails.plugins.springsecurity.GrailsUserDetailsService;
                                                        ^
/home/dev/.grails/2.1.0/projects/app/plugins/spring-security-ldap-1.0.6/src/java/org/codehaus/groovy/grails/plugins/springsecurity/ldap/GrailsLdapUserDetailsManager.java:13: cannot find symbol
symbol: class GrailsUserDetailsService
public class GrailsLdapUserDetailsManager extends LdapUserDetailsManager implements GrailsUserDetailsService {
                                                                                    ^
Note: Some input files use or override a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
8 errors

有人可以帮忙吗?

谢谢


**编辑****强>


我现在已经检查了插件和核心文件,并确保所有新的 Spring Security 导入都是正确的。该应用程序现在可以正常编译,但是当我运行它并尝试访问主页时,我收到以下错误:

| Running Grails application

Configuring Spring Security UI ...
... finished configuring Spring Security UI

Configuring Spring Security Core ...
... finished configuring Spring Security Core
| Error 2014-03-10 11:44:51,598 [pool-7-thread-1] ERROR plugins.DefaultGrailsPluginManager  - Error configuring dynamic methods for plugin [springSecurityCore:2.0-RC2]: null
Message: null
   Line | Method
->> 308 | compileStaticRules        in grails.plugin.springsecurity.web.access.intercept.AnnotationFilterInvocationDefinition
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
|   218 | initialize                in     ''
|   738 | initializeFromAnnotations in SpringSecurityCoreGrailsPlugin
|   599 | doCall                    in SpringSecurityCoreGrailsPlugin$_closure3
|   303 | innerRun . . . . . . . .  in java.util.concurrent.FutureTask$Sync
|   138 | run                       in java.util.concurrent.FutureTask
|   895 | runTask . . . . . . . . . in java.util.concurrent.ThreadPoolExecutor$Worker
|   918 | run                       in     ''
^   662 | run . . . . . . . . . . . in java.lang.Thread
| Server running. Browse to http://localhost:8080/my_app
| Error 2014-03-10 11:49:36,541 [http-bio-8080-exec-2] ERROR [/my_app].[gsp]  - Servlet.service() for servlet [gsp] in context with path [/my_app] threw exception
Message: null
   Line | Method
->> 273 | isAjax                          in grails.plugin.springsecurity.SpringSecurityUtils
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
|    45 | determineUrlToUseForThisRequest in grails.plugin.springsecurity.web.authentication.AjaxAwareAuthenticationEntryPoint
|    53 | doFilter . . . . . . . . . . .  in grails.plugin.springsecurity.web.filter.GrailsAnonymousAuthenticationFilter
|    49 | doFilter                        in grails.plugin.springsecurity.web.authentication.RequestHolderAuthenticationFilter
|    82 | doFilter . . . . . . . . . . .  in grails.plugin.springsecurity.web.authentication.logout.MutableLogoutFilter
|   895 | runTask                         in java.util.concurrent.ThreadPoolExecutor$Worker
|   918 | run . . . . . . . . . . . . . . in     ''
^   662 | run                             in java.lang.Thread

有人可以就此提供任何指导吗?

谢谢

【问题讨论】:

  • 我做了一个 grails clean 然后重新启动项目,一切都很好:)

标签: grails spring-security upgrade deprecated


【解决方案1】:

尝试清理所有输出伪影

grails clean-all

杀死所有java进程 清除 IDE 的缓存并重新启动 IDE 并重试。

我在使用 Intellij Idea 时遇到此错误,并且 ReflectionUtils 类的行为不一致。可能是类缓存问题。

【讨论】:

    【解决方案2】:

    您可能必须升级到 spring-security-ldap plugin to 2.0-RC2 才能使用 Spring Security Core 2.0_RC2。

    原因: 请注意最新版本的安全核心插件中的change in package name

    org.codehaus.groovy.grails.plugins.springsecurity.GrailsUserDetailsService
    grails.plugin.springsecurity.userdetails.GrailsUserDetailsService
    

    【讨论】:

      【解决方案3】:

      我发现如果你使用注解,你需要提供一个角色数组而不是单个字符串:

      @Secured(['IS_AUTHENTICATED_FULLY'])

      【讨论】:

        猜你喜欢
        • 2014-07-30
        • 1970-01-01
        • 2013-11-16
        • 1970-01-01
        • 2018-02-13
        • 2014-11-09
        • 2021-08-30
        • 2018-01-28
        • 2014-01-06
        相关资源
        最近更新 更多