【问题标题】:grails.app.context is lost after spring security logout春季安全注销后 grails.app.context 丢失
【发布时间】:2016-04-28 23:21:20
【问题描述】:

我有一个应用程序,我正在尝试在其中实现外部配置。这部分工作正常。但是,现在似乎某些配置设置正在丢失。

我正在使用这个设置:

grails.app.context = "/${appName}" 

appName 在 application.properties 文件中定义,并且工作正常。

如上所述,我扩展了我的数据源和 grails.serverURL 设置。

现在,当我单击注销链接时,我会被重定向到 http://myapplication/[:]/j_spring_security_logout

我可以将 [:] 替换为上下文,它会将我带到正确的 url(注销后),但是当我尝试重新登录应用程序时,我得到了这个 url。

http://myapplication/[:] 代替默认登录网址。

编辑 在我的 Config.groovy 文件中添加了一些 println 语句。它似乎加载了 Config.groovy 文件 3 次。前两次我看到了我期望看到的内容,第三次是将上下文设置为 [:]。

为什么要加载配置三次,第三次丢失我的设置是怎么回事?

【问题讨论】:

    标签: spring grails


    【解决方案1】:

    回答我自己的问题。经过多次调试和拉头发后,我找到了答案。注销后并不是上下文丢失了。该应用程序从未真正获得正确的设置。 (某种意义上)。有几个插件在启动期间调用 config.groovy 文件。其中之一恰好是多租户。当访问 config.groovy 和后续的外部配置文件 ${appName} 不再在范围内,因此 Tomcat 加载应用程序时使用其默认约定没有问题。然后 spring 注销尝试在注销后重定向到 ${appName} ,当时它是空的或 [:]。

    我找到的解决方案是在外部配置文件中更改我的 grails.serverURL

    grails.serverURL = "http://myApplication.com/${appName}"
    

    grails.serverURL = "http://myApplication.com" + grails.app.name
    

    这允许 application.properties 文件包含 app.name 变量和外部配置文件,以使用我需要的正确属性来进行 war 文件的不同部署。

    这可能不是最优雅的解决方案,但它解决了弹簧注销的问题。

    【讨论】:

    • 帮助了我。我在应该更改 serverUrl 的地方进行了 paypal 配置。确保为生产设置正确。
    猜你喜欢
    • 1970-01-01
    • 2015-10-02
    • 2011-11-11
    • 2016-06-09
    • 1970-01-01
    • 2014-03-26
    • 2016-11-06
    • 2011-03-07
    • 2015-01-02
    相关资源
    最近更新 更多