【发布时间】:2013-05-20 00:41:56
【问题描述】:
我有一个简单的 Spring Security (3.x) 配置,要求对我的应用程序中的一部分资源进行 HTTP BASIC 身份验证。
<http auto-config="true" use-expressions="true">
<intercept-url pattern="/secured/**" access="hasRole('ROLE_ADMIN')" requires-channel="https" />
<http-basic />
</http>
应用部署在上下文根ctx。我正在将模式/secured/* 映射到 Spring Security 过滤器链上。
对资源https://server:httpsport/ctx/secured/blah 的请求工作正常。对https://server:httpsport/ctx/secured 的请求也是如此。但是,当我切换到不安全时,例如。 http://host:port/ctx/secured 似乎重定向返回错误,复制了上下文根。在我的日志中,我可以看到向/ctx/ctx/secured/... 发出了请求。
有人可以建议问题是什么或我应该去哪里看吗?
【问题讨论】:
-
您是否使用 fiddler 或某种 HTTP 代理或 HTTP 捕获拦截了 302,以确保 302 确实具有 /ctx/ctx? Spring生成的重定向URL(端口号后面的部分)应该是
request.getRequestURI() + ((queryString == null) ? "" : ("?" + queryString)); -
问题解决了吗?我遇到了相同的重复上下文路径问题。当我在本地开发时它可以工作。但是在生产中使用 nginx 进行代理时,这是一个问题。
标签: java web-applications spring-security basic-authentication