grails springsecurity 的 LoginController 抛出 NotSerializableException

标签 grails spring-security login-control

我有一个运行良好的 grails 2.5.0 项目(称为 lss),其中插入了 spring-security-core:2.0-RC4。我创建了该项目的 dev war 文件,在 Tomcat8.0 上的服务器上运行并使用网址 http://localhost:8080/lss/login/auth .一切正常 - 我可以使用 BootStrap 中提供的凭据登录。

然后,我将 localhost 名称切换为服务器名称,并尝试使用 URL http://devServer.prods.ca:8080/lss/login/auth 访问它。 .同样,该项目还活着,我看到登录页面没有问题,但是现在当我输入我的凭据时,它们被使用,用户名和密码字段被重置干净,并且没有任何重定向,我只是留在登录页面上!

查看 stacktrace.log 文件,我看到以下异常:

java.io.WriteAbortedException: writing aborted; java.io.NotSerializableException: grails.plugin.springsecurity.LoginController
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1355)
at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1993)
...
Caused by: java.io.NotSerializableException: grails.plugin.springsecurity.LoginController
at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1184)
at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1548)
...

有关如何解决此问题的任何建议,请成功进行可验证的部署?

最佳答案

得到它的工作,应归功于此link .实际上,问题在于在 User 域类中大胆地注入(inject)带有 def 关键字的 springSecurityService - 一个其 Controller 不可序列化的插件。通过在用户域类中进行这些编辑:

  • 用 transient grailsApplication
  • 替换 transient springSecurityService
  • 确保更新后的语句是 static transients = ['grailsApplication']
  • 创建方法:

    def getSss() {
    grailsApplication.mainContext.springSecurityService
    }
  • 将使用 springSecurityService 的唯一方法更新为:

    protected 无效编码密码(){
    密码 = sss?.passwordEncoder ? sss.encodePassword(密码):密码
    }

  • 一切正常,并且能够顺利访问和使用具有服务器名称的应用程序。

    关于grails springsecurity 的 LoginController 抛出 NotSerializableException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29946470/

    相关文章:

    java - 为什么我在进行 spring-security jdbc 身份验证时遇到错误?

    mysql - 我可以查询给定主机给出了多少个 connect_errors 吗?

    html - 在移动设备上显示两个字段的可交换登录表单

    用于登录的身份验证过滤器和 servlet

    jquery - Grails-合并来自多个域的数据并返回 Controller

    mongodb - Spring Remember-me 与 MongoDB 不会删除 token

    sorting - Grail域模型关联对多个字段的默认排序

    java - WebSecurity 忽略不适用于 AbstractAuthenticationProcessingFilter

    grails - 与namedQuery以多对多关系获取随机记录

    grails - 如果从特定页面访问,则阻止访问给定的 URL