Spring Security:修改过滤器链后突然出现类路径和Thymeleaf相关问题

时间:2016-07-15 21:23:17

标签: java spring spring-security waffle

我正在尝试将waffle-spring-security4与现有的Spring Boot项目集成,其中大部分配置都是自动发生的。我注意到,当NegotiateSecurityFilter在链中时,会发生一些奇怪的事情:我在使用一个String属性初始化一个完全无关紧要的类时得到ClassNotFoundException;以前装好的Thymeleaf模板现在无法解决,依此类推。当发生这种情况时,我在链中有以下过滤器:

  1. WebAsyncManagerIntegrationFilter
  2. SecurityContextPersistenceFilter
  3. HeaderWriterFilter
  4. CsrfFilter
  5. LogoutFilter
  6. NegotiateSecurityFilter(华夫饼)
  7. BasicAuthenticationFilter
  8. RequestCacheAwareFilter
  9. SecurityContextHolderAwareRequestFilter
  10. SessionManagementFilter
  11. ExceptionTranslationFilter
  12. FilterSecurityInterceptor
  13. 切换回HTTP基本身份验证后,问题就会消失,所以我认为问题可能出在上面的过滤器上。你对如何解决这个问题有什么想法吗? (如果您有任何调试类似问题的策略,那就太棒了。)

1 个答案:

答案 0 :(得分:0)

是的,它是由Waffle引起的,因为它已经证明了。

问题在于,一旦您使用Waffle成功完成身份验证,在剩余的运行中,无法访问必要的文件。这导致尝试从类路径加载某些东西的所有东西都惨遭失败。我必须在这里添加一下,我尝试使用gradle bootRun从源代码运行它,然后构建jar并运行它;在第一种情况下,Thymeleaf决议失败,在第二种情况下,没有找到Spring类。

事实证明,如果远程用户(通过SSO登录)对文件没有读取权限,那么一旦用户通过身份验证,应用程序将无法正常工作!我不知道Waffle引起的这种环境变化,因为我不记得在文档上看到任何关于它的事情 - 但这是有道理的。在我给用户提供读取权限后,它开始工作。