我正在开发两个单独的项目:一个是Polymer
app Service worker
(搭建Polymer CLI),第二个app是Spring Boot
Vaadin
及其迭代库Vaadin Spring
。这两个应用程序都在localhost:8080
上运行。
在SpringBoot应用程序中,未经身份验证的用户被重定向到/login
。验证成功后,应将用户重定向回/
,而是重定向到网址http://localhost:8080/service-worker.js
,其中显示默认的春季404
页面。当我手动将网址更改回/
时,SpringBoot应用程序再次正常运行。
我找不到问题的根源(如果是Polymer或SpringBoot + Vaadin)并且每次清除缓存或手动更改URL都令人沮丧。
修改
我正在使用SavedRequestAwareVaadinAuthenticationSuccessHandler
提供的默认处理程序Vaadin Spring
。它应该重定向回以前的网址或后备网址/
。
@Bean(name = VaadinSharedSecurityConfiguration.VAADIN_AUTHENTICATION_SUCCESS_HANDLER_BEAN)
VaadinAuthenticationSuccessHandler vaadinAuthenticationSuccessHandler(@SuppressWarnings("SpringJavaAutowiringInspection") HttpService httpService, VaadinRedirectStrategy vaadinRedirectStrategy) {
return new SavedRequestAwareVaadinAuthenticationSuccessHandler(httpService, vaadinRedirectStrategy, "/");
}
答案 0 :(得分:1)
我遇到了同样的问题。这是一个浏览器,你不能从你的应用程序或服务器端注意到。
我通过手动删除chrome中localhost地址的服务工作者来解决了这个问题。
您可以通过在chrome中打开开发人员工具来实现这一点 - >标签资源 - >服务人员
在特定网址上找到您的服务工作人员,例如http://localhost:8080/login并将其删除。
另一种方法是使用不同的localhost(localhost,127.0.0.1,127.0.0.2)IP地址来开发聚合物应用程序和Vadin应用程序。
答案 1 :(得分:1)
我把它抬高了。 转到locahost:8080 / login->检查(ctr + shift + I)->应用程序选项卡->选择Service Worker并注销sw.js 祝好运!
答案 2 :(得分:-1)
问题是需要访问“ service-worker.js”身份验证,并且由于每次更改都会自动访问此“ service-worker.js”并替换会话属性SPRING_SECURITY_SAVED_REQUEST,因此一种简单的解决方案是公众访问它:
http.authorizeRequests()
.antMatchers("/service-worker.js").permitAll()
.antMatchers("/**").fullyAuthenticated().and()