[英]Why Doesn't Login Page In Vaadin Show Up When I'm Using Spring Security
我已经设置了一个基本的 Spring 安全配置:
@Configuration
@EnableWebSecurity
public class SecurityConfiguration extends WebSecurityConfigurerAdapter {
@Override
protected void configure(final AuthenticationManagerBuilder auth) throws Exception {
auth.inMemoryAuthentication()
.withUser("user1").password(passwordEncoder().encode("user1Pass")).roles("USER")
.and()
.withUser("user2").password(passwordEncoder().encode("user2Pass")).roles("USER")
.and()
.withUser("admin").password(passwordEncoder().encode("adminPass")).roles("ADMIN");
}
@Override
protected void configure(final HttpSecurity http) throws Exception {
http
.csrf().disable()
.authorizeRequests()
.antMatchers("/**").hasAnyRole("USER", "ADMIN")
.antMatchers("/login*").permitAll()
.anyRequest().authenticated()
.and()
.formLogin()
.loginPage("/login").permitAll();
}
@Bean
public PasswordEncoder passwordEncoder() {
return new BCryptPasswordEncoder();
}
}
还有一个登录页面:
@Viewport("width=device-width, minimum-scale=1, initial-scale=1, user-scalable=yes, viewport-fit=cover")
@Route("login")
@PageTitle("Login")
public class Login extends VerticalLayout {
/**
*
*/
private static final long serialVersionUID = 1L;
public Login(){
LoginOverlay login = new LoginOverlay(); //
login.setAction("login"); //
login.setOpened(true); //
login.setTitle("Spring Secured Vaadin");
login.setDescription("Login Overlay Example");
add(login);
}
}
但是当我在没有登录的情况下访问localhost:8080
时,Spring 会将我导航到localhost:8080/login
。
问题是我期待 Vaadin 的内置标准登录布局。 但什么都没有出现。 只是一个白色的空白页。 我忘记了什么吗?
发生这种情况是因为您忘记覆盖SecurityConfiguration
类中的configure(WebSecurity web)
方法,如教程为 Vaadin 应用程序设置 Spring Security 中所述:
/**
* Allows access to static resources, bypassing Spring security.
*/
@Override
public void configure(WebSecurity web) throws Exception {
web.ignoring().antMatchers(
// Vaadin Flow static resources //
"/VAADIN/**",
// the standard favicon URI
"/favicon.ico",
// the robots exclusion standard
"/robots.txt",
// web application manifest //
"/manifest.webmanifest",
"/sw.js",
"/offline-page.html",
// (development mode) static resources //
"/frontend/**",
// (development mode) webjars //
"/webjars/**",
// (production mode) static resources //
"/frontend-es5/**", "/frontend-es6/**");
}
我建议您通读整个教程系列,也许您也忽略了其他事情。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.