我有一个部署到 Heroku 的应用程序,它使用 Spring Security,并且通过扩展,HttpSessionSecurityContextRepository
。意识到 HttpSession
在扩展到多个测功机时会导致问题,我正在尝试使用 --session_manager memcache
标志配置 webapp-runner ( https://github.com/jsimone/webapp-runner ) Heroku 内存缓存插件)。
使用 Apache 和 mod_proxy
、两个 Tomcat 实例和 memcached 1.4.13 的本地配置工作正常。但是,当部署到 Heroku 时,它会失败,即使使用单个 dyno - 随机重定向到登录页面,就好像未经身份验证一样,表明 session 存储不工作。相同的 Procfile,通过 heroku config
等验证 MEMCACHE_*
变量
有没有人有类似配置的经验?
最佳答案
更新:配置按设计工作。
该问题是由 Spring Security 错误配置引起的。隐藏在应用程序中的错误图像 URL 触发了重定向。虽然这应该只是一个 404,但在 context-security.xml 中还有一个包罗万象的 intercept-url
模式,访问权限设置为 IS_AUTHENTICATED_FULLY
。结果是任何带有错误 URL 的页面都被重定向到登录页面。更正这些 URL 解决了部署到 Heroku 时的问题,但我无法解释为什么它没有出现在本地系统上。
关于java - 使用 Spring 和 Heroku 进行身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11830799/