gpt4 book ai didi

java - 将 spring-boot-starter-security 与 Vaadin 7 集成

转载 作者:行者123 更新时间:2023-11-30 03:30:09 25 4
gpt4 key购买 nike

我正在尝试将 Spring SecurityVaadin Spring ( https://vaadin.com/wiki/-/wiki/Main/Vaadin+Spring ) 集成。

我的应用程序类刚刚启动 Spring 应用程序

https://gist.github.com/anonymous/c047030c61b90c02d1ef

我创建了一个扩展WebSecurityConfigurerAdapter的类

https://gist.github.com/anonymous/0e905d0627adf5e2dc39

pom.xml 包含依赖项 spring-boot-starter-security

当我输入 localhost:8080 时,它会将我重定向到 Spring Security 提供的登录 URL ( http://localhost:8080/login )。我输入用户名/密码(user/password)并收到此错误。

java.lang.NullPointerException: null at com.vaadin.server.LegacyCommunicationManager.getClientCache(LegacyCommunicationManager.java:194)

(完整日志输出位于 https://gist.github.com/anonymous/b4be702762b5bc744c66 )。

我尝试根据我在网上找到的示例向 ApplicationSecurity 添加覆盖的方法“configuration(HttpSecurity http)”,但这给了我更多错误,因为这不会将我带到/根本没有登录页面。

最佳答案

我想这可能与当前测试版并不支持所有功能有关,如 stated by Henri Sara :

Vaadin Spring is an official add-on (moving from alpha to beta at themoment, with some API changes) that includes the core functionality ofVaadin4Spring.

The parts of Vaadin4Spring that are not covered by the current versionof Vaadin Spring (event bus, Spring Security support, ...) will beconverted to use Vaadin Spring sometime after the beta release. Morefunctionality might migrate to the official add-on in future versions.

无论如何,出于对 Spring Security 的好奇(到目前为止还没有使用它),我对 Vaadin 7.4.3 做了一些研究。我将根记录器设置为调试,添加了一些断点 (UIInitHandler:148) 并注意到以下内容:

  • UIInitHandler 正确处理初始请求,并创建相应 UI 的实例
  • /error 路径上触发同一个断点 @ UIInitHandler:148 后,处理程序无法解析 UI,因为很可能您没有一个定义的。这也让我认为可能会抛出异常,但隐藏在其中的某个地方
  • 查看日志,我看到很多为 http://localhost:8080/login?v-1429092013868 找到无效的 CSRF token

所以我将 ApplicationSecurity.configure(HttpSecurity http) 方法更改为 http.csrf().disable().authorizeRequests().anyRequest().permitAll(); 然后我就可以进入第二个屏幕了。现在,根据我收集的信息,这可能不太安全,但它应该为您提供一个起点。

注意:您可能已经知道这一点,但如果您不知道,这可以节省您一些时间,我也很高兴分享这一点,因为我花了一段时间才弄清楚。根据您设置应用程序安全性的方式,您最终可能会将该方法更改为如下所示。

@Override
protected void configure(HttpSecurity http) throws Exception {
http.csrf().disable().
exceptionHandling().authenticationEntryPoint(new LoginUrlAuthenticationEntryPoint("/login")).accessDeniedPage("/accessDenied")
.and().authorizeRequests()
.antMatchers("/VAADIN/**", "/PUSH/**", "/UIDL/**","/login", "/login/**", "/error/**", "/accessDenied/**").permitAll()
.antMatchers("/authorized", "/**").fullyAuthenticated();
}

关于java - 将 spring-boot-starter-security 与 Vaadin 7 集成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29227505/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com