Я пытаюсь создать приложение на основе Spring Boot (1.2.7.RELEASE) и Vaadin (7.6.3). Моя проблема в том, что я не могу интегрировать Spring Security с Vaadin. Я хочу, чтобы пользовательский Vaadin создал LoginScreen и Spring Security. Мой проект установки выглядит следующим образом:Spring Boot Security с Vaadin Войти
@Configuration
@EnableWebSecurity
public class SpringSecurityConfig extends WebSecurityConfigurerAdapter {
@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/**", "/vaadinServlet/**").permitAll()
.antMatchers("/authorized", "/**").fullyAuthenticated();
}
}
А вот мой Vaadin Войти UI
@SpringUI(path = "/login")
@Title("LoginPage")
@Theme("valo")
public class LoginUI extends UI {
TextField user;
PasswordField password;
Button loginButton = new Button("Login", this::loginButtonClick);
private static final String username = "username";
private static final String passwordValue = "test123";
@Override
protected void init(VaadinRequest request) {
setSizeFull();
user = new TextField("User:");
user.setWidth("300px");
user.setRequired(true);
user.setInputPrompt("Your username");
password = new PasswordField("Password:");
password.setWidth("300px");
password.setRequired(true);
password.setValue("");
password.setNullRepresentation("");
VerticalLayout fields = new VerticalLayout(user, password, loginButton);
fields.setCaption("Please login to access the application");
fields.setSpacing(true);
fields.setMargin(new MarginInfo(true, true, true, false));
fields.setSizeUndefined();
VerticalLayout uiLayout = new VerticalLayout(fields);
uiLayout.setSizeFull();
uiLayout.setComponentAlignment(fields, Alignment.MIDDLE_CENTER);
setStyleName(Reindeer.LAYOUT_BLUE);
setFocusedComponent(user);
setContent(uiLayout);
}
public void loginButtonClick(Button.ClickEvent e) {
//authorize/authenticate user
//tell spring that my user is authenticated and dispatch to my mainUI
}
}
Когда я начинаю моя весна приложение перенаправляет меня к авторизации UI, который отлично.
Но я не знаю, как аутентифицировать пользователя в отношении механизма безопасности пружины и отправлять его в мой основной интерфейс.
Я также сталкиваюсь с проблемой с токенами csrf, если я не отключу csrf. Я получаю токен crfs, является единственным исключением. Я нашел много примеров для решения этих проблем, но нет решения с Vaadin.
Спасибо за помощь.
У меня есть рабочий пример приложения с использованием Vaadin + Spring Boot + Spring Security, но, к сожалению, этот пример идет без какой-либо документации. Но, возможно, вы можете получить вдохновение от кода для своей задачи: https://github.com/rolandkrueger/vaadin-by-example/tree/master/en/architecture/SpringBootSecurity –
Эй, Роланд, я взглянул на ваш проект и это очень помогло. Спасибо, что поделились ею. –
Рад, что я мог бы помочь, не отвечая на ваш вопрос ;-) –