java - Spring + Tomcat - 在表单登录中禁用前置的应用程序模块名称

标签 java spring tomcat spring-security cuba-platform

在我们的 Spring 安全 XML 文件中,我有一个 form-login 配置标签:

<form-login always-use-default-target="true" 
        authentication-failure-url="/" 
        default-target-url="/bo/bo" 
        login-page="/" 
        login-processing-url="/login" 
        password-parameter="password" 
        username-parameter="login"/> 

我的应用名为“myapp”,可从 localhost:8080/myapp 访问。

当我成功登录时,它会转到 localhost:8080/myapp/bo/bo,这是预期的。

但是,现在我有一个指向 Tomcat 上的 ip:port/myapp 的域(比如 mywebsite.com),现在发生的事情是当我登录时从mywebsite.com解析为ip:port/myapp/myapp/bo/bo,你可以在路径中看到双应用名称(myapp)。第一个 myapp 来自域 DNS 重定向设置(它必须在那里才能在 Tomcat 中运行),第二个 myapp 似乎来自表单登录 Spring 安全 XML 中的 default-target-url。

如何禁用此行为并使 URL 正确解析为 ip:port/myapp/bo/bo

[我是围绕 Spring 框架构建的 CUBA 平台。]

谢谢,

最佳答案

看来这个问题已经在这里得到了回答:https://www.cuba-platform.com/discuss/t/change-cuba-development-mode-to-production-mode-to-get-rid-of-auto-prepended-app-portal-in-url/2678

简而言之,将您的门户应用程序作为 ROOT 应用程序部署到 tomcat。这意味着您应该将 tomcat/webapps/app-portal 文件夹重命名为 tomcat/webapps/ROOT,以便您的应用程序将部署到/。

然后在 tomcat/conf/ROOT/local.app.properties 中设置 cuba.webContextName

cuba.webContextName = /

您的门户网站可通过 http://domain.domain-zone/ 访问

不要为此/部署更改应用程序代码,只需调整应用程序设置即可。

关于java - Spring + Tomcat - 在表单登录中禁用前置的应用程序模块名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46495876/

相关文章:

tomcat - JAX-WS:来自另一个 Web 服务的 Web 服务调用

Java:私有(private)内部类返回给外部代码

java - 尝试填充 float 组时出现 ArrayStoreException

java - 来自父类(super class)方法调用的 Mockito NullPointerException

java - 如何使用 JndiPropertySource?

javascript - Angular2 和 tomcat 8 : CORS automatically sends a OPTION request instead of POST

java - 测试所有可能的行组合

java - 创建一个二分搜索函数,返回数组中所需元素最左边出现的索引

java - 如何将 Spring 上下文作为方法参数传递?

multithreading - 如何找出哪个tomcat webapp有线程泄漏?