在我们的 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/