当前位置: 首页 > 知识库问答 >
问题:

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

爱花蜂
2023-03-14

我试图将Spring SecurityVaadin Spring(https://vaadin.com/wiki/-/wiki/main/vaadin+spring)集成。

我的应用程序类只是启动Spring应用程序

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

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

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

java.lang.nullPointerException:com.vaadin.server.LegacyCommunicationManager.GetClientCache(LegacyCommunicationManager.java:194)

我尝试根据在web上找到的示例applicationsecurity添加重写的方法“configuration(HttpSecurity http)”,但这给我带来了更多错误,因为它根本不带我进入/login页面。

共有1个答案

艾安和
2023-03-14

我想这可能与Henri Sara所说的在当前测试版中并不支持所有功能有关:

Vaadin Spring是一个官方附加组件(目前正在从alpha升级到beta,API做了一些改动),包含了Vaadin4Spring的核心功能。

Vaadin4Spring中当前版本Vaadin Spring未覆盖的部分(事件总线、Spring Security支持,...)将在beta发布后的某个时候转换为使用Vaadin Spring。在未来的版本中,更多的功能可能会迁移到正式的附加组件中。

  • 初始请求由UIIinitHandler正确处理,并创建适当UI的实例
  • 紧接着为/error路径触发了相同的断点@UIIInitHandler:148,处理程序无法解析UI,因为很可能没有定义UI。这也让我想到可能会抛出一个异常,但它隐藏在其中的某个地方
  • 查看日志时,我发现了许多为http://localhost:8080/login找到的无效CSRF令牌?v-1429092013868

因此,我稍微将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();
}
 类似资料:
  • 我试图将Spark应用程序与spring boot集成,但由于Spark core也有jetty server和servlet包,它们与spring boot web starter servlet包冲突。 我已经在下面的帖子中排除了初学者日志记录 谢谢

  • 寻找一个示例,展示将spring cloud sleuth与spring boot amqp(rabbit)发布者和订阅者集成在一起。 我确实在日志中看到以下消息 另外,在接收服务上应该做些什么?

  • 我正在努力学习spring boot,我注意到有两种选择。 > spring-boot-starter-web-根据文档,它支持全栈web开发,包括Tomcat和web-mvc spring-Boot-Starter-Tomcat 既然#1支持Tomcat,为什么要使用#2呢? 有什么不同? 谢谢

  • 当我试图用启动我的spring boot项目时,我遇到了这个特殊的错误。奇怪的是,我的应用程序会在添加几个存储库和服务之前启动,但我似乎无法缩小为什么spring不能初始化一个在添加之前正在工作的存储库的范围。 以下是相关错误: 最有趣的是这句话: 11:38:43.583错误org.springframework.boot.context.embedde.Tomcat.tomcatstarter

  • 我的项目root目录下pom文件添加了springboot的依赖 前端的目录下pom中添加了,要用到@restcontroller 然后一堆包冲突,是不是我的做法有错误,还是版本问题?

  • 主要内容:starter,spring-boot-starter-parent传统的 Spring 项目想要运行,不仅需要导入各种依赖,还要对各种 XML 配置文件进行配置,十分繁琐,但 Spring Boot 项目在创建完成后,即使不编写任何代码,不进行任何配置也能够直接运行,这都要归功于 Spring Boot 的 starter 机制。本节我们将对 stater 进行介绍。 starter Spring Boot 将日常企业应用研发中的各种场景都抽取出来,做成一个个的