【问题标题】:Grails SpringsecurityGrails Springsecurity
【发布时间】:2013-02-21 08:15:27
【问题描述】:

我正在使用 Grails 开发一个应用程序。

我一直面临一个问题,每当我在域类中进行一些更改时,应用程序会自动重新运行,当我尝试刷新页面时,我会收到拒绝访问页面,并且日志显示 user Id is null
这是日志

使用 org.springframework.deerwalk.impl.CustomCasAuthenticationProvider 进行身份验证尝试

groovy.lang.MissingMethodException: No signature of method: static com.usermanant.User.get() is applicable for argument types: (java.lang.Long) values: [1]
Possible solutions: getId(), wait(long), setId(java.lang.Long), getAt(java.lang.String), grep(java.lang.Object), wait()
 User:null

请帮帮我。

【问题讨论】:

    标签: grails spring-security


    【解决方案1】:

    如果您使用内存数据库,那么只要您对域模型进行更改,您现有的项目就会被删除。

    如果您愿意,可以将您的最小数据集插入 bootstrap.groovy。

    用真正的数据库(如 MySQL)热替换通常还需要重新启动您的应用程序。

    【讨论】:

    • 但是为什么应用程序重新运行时用户ID为空
    • 可能是因为会话失效了。如果您首先在没有登录用户的情况下访问该页面,您应该会得到相同的行为。
    • 保存对域类的更改时始终重启应用
    【解决方案2】:

    在你的 Config.grooy(在配置下)你有这些行:

    grails.plugins.springsecurity.userLookup.userDomainClassName = 'com....User'
    grails.plugins.springsecurity.userLookup.authorityJoinClassName = 'com....UserRole'
    grails.plugins.springsecurity.authority.className = 'com....Role'
    

    你应该在这里有正确的类名。

    在你的情况下:

    grails.plugins.springsecurity.userLookup.userDomainClassName ='com.usermanant.User'
    

    【讨论】:

      猜你喜欢
      • 2017-06-21
      • 2012-10-07
      • 2013-10-31
      • 1970-01-01
      • 2015-03-31
      • 2014-05-29
      • 2015-07-08
      • 2015-08-25
      • 2015-02-09
      相关资源
      最近更新 更多