请看看我的安全-config.xml中的一部分:春季安全网址拦截:不同行为的Tomcat 7和JBoss Wildfly 8
<http use-expressions="true">
<intercept-url pattern="/" access="permitAll" />
<intercept-url pattern="/login" access="permitAll" />
<intercept-url pattern="/home" access="permitAll" />
[other stuff here]
<intercept-url pattern="/**" access="denyAll" />
</http>
让我们假设我的应用程序上下文名称为koko
。
这工作正常,在Tomcat中:当我访问http://tomcat-url:8080/koko/
或http://tomcat-url:8080/koko/home
我看到一个主页问我登录 - 后,我登录,我重定向到http://tomcat-url:8080/koko/
,我可以看到链接到其他的东西。
当我尝试在JBoss中做同样的事情时,我访问http://jboss-url:8080/koko/
,我立即得到一个登录页面!如果我访问http://jboss-url:8080/koko/home
,我会看到主页要求我登录。现在,我登录后,我又被重定向到http://jboss-url:8080/koko/
,我得到了一个拒绝访问!如果我在登录后手动转到http://jboss-url:8080/koko/home
,我会看到其他员工并能正常导航。
所以,问题似乎是JBoss的不理解行
<intercept-url pattern="/" access="permitAll" />
,或者是由下面的/**
线覆盖。然而,tomcats可以和at正常工作。这不应该依赖于Application Server,因为它完全与弹簧相关,并且两个应用程序都使用相同的弹簧。
更新 - 解决方案:基于@ M.Deinum的回答,我添加了一个名为/index.html的新url请求映射到我的主页,并且一个允许所有行到该url - 并且工作正常!
我建议你打开日志并看看会发生什么。我的猜测是,在JBoss中'/'被重新映射为'/ index.jsp'。 JBoss有自己的容器,可能会以不同的方式处理URI。 –
@ M.Deinum是的,你是对的 - JBoss出于我未知的原因试图找到/koko/index.html当我去/ koko /。你可以添加一个正确的答案,以便我可以接受它吗? – Serafeim