Vaadin 8 + Spring Boot - потеря соединения с сервером, попытка переподключения - PullRequest
1 голос
/ 08 мая 2019

По традиционным причинам я должен использовать Vaadin 8.6.3.

У меня есть простая индексная страница с меню с тремя элементами (home, user, admin) иПриветственное сообщение.

Я отображаю эту индексную страницу на / и хочу, чтобы она была доступна для неаутентифицированных пользователей.опция меню home ссылается на эту страницу.

user и admin ссылаются на страницы, которые еще не существуют, но должны быть защищены загрузкой Spring.

Это мое (только пока) Конфигурация WebSecurity:

import org.springframework.context.annotation.Configuration
import org.springframework.security.config.annotation.web.builders.HttpSecurity
import org.springframework.security.config.annotation.web.builders.WebSecurity
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter

@Configuration
@EnableWebSecurity
class AnyRequestConfiguration : WebSecurityConfigurerAdapter(){

    override fun configure(http: HttpSecurity) {
        http
            .csrf().disable() //vaadin has its own csrf protection, therefore this must be disabled
            .authorizeRequests()
                .antMatchers("/").permitAll()
                .anyRequest().authenticated()
    }

    override fun configure(web: WebSecurity){
        web
            .ignoring().antMatchers(
                "/VAADIN/**",
                "/frontend/**",
                "/webjars/**",
                "/images/**",
                "/frontend-es5/**", "/frontend-es6/**"
            )
    }
}

Страница отображается, отображается меню и приветственное сообщение, но соединение немедленно теряется, и я получаю сервер

соединение прервано, попытка восстановить сообщение

в правом верхнем углу страницы с вращающимся кругом загрузки.

Почему?Как мне заставить это работать?

Страница указателя:

import com.vaadin.annotations.Theme
import com.vaadin.server.VaadinRequest
import com.vaadin.spring.annotation.SpringUI
import com.vaadin.ui.Label
import com.vaadin.ui.MenuBar
import com.vaadin.ui.UI
import com.vaadin.ui.VerticalLayout

@SpringUI(path = "/")
@Theme("mytheme")
class Index : UI() {
    companion object {
        const val HOME_MENU = "Home"
        const val USER_MENU = "User"
        const val ADMIN_MENU = "Admin"
        lateinit var navigation: MenuBar
            private set
    }
    private lateinit var layout: VerticalLayout

    override fun init(request: VaadinRequest?) {
        layout = VerticalLayout()

        //navigation bar
        navigation = MenuBar()
        navigation.id = "menubar"
        navigation.addItem(HOME_MENU)
        navigation.addItem(USER_MENU)
        navigation.addItem(ADMIN_MENU)

        //TODO: add onClick-listeners

        //welcome message
        val welcomeMessage = Label()
        welcomeMessage.id = "label.welcome"
        welcomeMessage.value = "Welcome to Spring Security Demo with Vaadin"


        layout.addComponents(
                navigation,
                welcomeMessage
        )

        this.content = layout
    }
}

Обновление

Devconsole показывает ошибку

com.vaadin.DefaultWidgetSet-0.js: 6129 POST http://localhost:8080/vaadinServlet/UIDL/?v-uiId=0 403

с предупреждением

com.vaadin.DefaultWidgetSet-0.js: 6421 ср. 08 мая 12:19:17 GMT + 200 2019 com.vaadin.client.communication.DefaultConnectionStateHandler ПРЕДУПРЕЖДЕНИЕ. Сервер вернул 403 для xhr

, после чего он делает еще одну попытку

Ср 08 мая 12:20:33 GMT + 200 2019 com.vaadin.client.communication.DefaultConnectionStateHandler

ИНФОРМАЦИЯ: попытка переподключения 49 для XHR

com.vaadin.DefaultWidgetSet-0.js: 6421 Ср. 08 мая 12:20:38 GMT + 200 2019 com.vaadin.client.communication.DefaultConnectionStateHandler

INFO: повторная отправка последнего сообщения на сервер ...

com.vaadin.DefaultWidgetSet-0.js: 6421 ср. 08 мая 12:20:38 GMT + 200 2019 com.vaadin.client.communication.XhrConnection

ИНФОРМАЦИЯ: Sокончание xhr сообщения серверу: {"csrfToken": "24cb59a1-cd65-4774-b208-c7272314e8a7", "rpc": [["0", "com.vaadin.shared.ui.ui.UIServerRpc", "resize", [1478,698,1478,698]]], "syncId": 0, "clientId": 0, "wsver": "8.6.3"}

, что также не выполняется, поэтомукруг повторяется.

...