1

我对使用 Spring 和 Spring 安全性很陌生,所以问题可能很小。

当前设置

我们使用 Vaadin、Spring 和 Keycloak 制作了一个应用程序。现在据我了解,Spring 安全性和 Keycloak 可以一起工作以使登录用户可以访问或不访问页面。到目前为止,只要您登录,我们就有多个可以正常工作的页面。

目标

现在我们要添加一个不需要登录的公共页面“硬件”。这似乎比应该的更难?硬件 URL 类似于 /hardware/(有效序列号)。/hardware 路径本身不存在,也从不作为路径使用,只能与序列号结合使用!

尝试

在我们的 SecurityConfig 中,我们有以下代码:

http.csrf()
              .disable()
              .logout()
              .logoutUrl("/logout")
              .permitAll(false)
              .and().authorizeRequests().antMatchers("/vaadinServlet/UIDL/**").permitAll()
              .and().authorizeRequests().antMatchers("/vaadinServlet/HEARTBEAT/**").permitAll()
              .and().authorizeRequests().antMatchers("/hardware/**").permitAll()
              .and().authorizeRequests().antMatchers("/**").hasAuthority(Privilege.AUTHENTICATED);

但是现在在我们的公共页面“硬件”上,我们仍然遇到了厄运的“服务器连接丢失,试图重新连接......”错误。是否有可能某个地方 Spring 或 Vaadin 或 Keycloak 正在调用其他一些导致该页面失败的东西,或者这个配置是错误的?

或者也许有关于如何调试这个的一般提示?一个多星期以来,我们一直在努力克服这个问题,但进展绝对为零……

问候,

阿诺德

4

1 回答 1

0

为什么在硬件之后使用 /**?它涵盖了硬件的所有子环节,而不是它本身

于 2020-06-24T13:50:12.920 回答