You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Vaadin22集成Spring MVC与Spring Security无默认登录页问题求助

Vaadin22非Spring Boot环境集成Spring Security默认登录页不显示修复方案

问题核心原因是非Spring Boot场景下没有自动完成Vaadin与Spring Security的适配配置,存在两处关键缺失:一是Spring Security过滤器链未正确放行Vaadin运行必需的静态资源、内部交互路径,导致请求被提前拦截;二是未配置表单登录规则与Vaadin视图访问检查逻辑,登录页跳转规则不生效。

按以下步骤配置即可修复:

1. 补全Spring Security路径拦截规则

重写WebSecurityConfigurerAdapter的configure(HttpSecurity http)方法,添加Vaadin相关路径的放行规则,同时开启默认表单登录:

@Override
protected void configure(HttpSecurity http) throws Exception {
    http
        // 关闭CSRF校验,适配Vaadin内部UIDL、Push请求机制
        .csrf().disable()
        .authorizeRequests()
            // 放行Vaadin静态资源与内部端点
            .antMatchers(
                "/VAADIN/**",
                "/frontend/**",
                "/icons/**",
                "/images/**",
                "/sw.js",
                "/manifest.webmanifest",
                "/offline.html",
                "/UIDL/**",
                "/HEARTBEAT/**",
                "/push/**",
                "/connect/**",
                "/login",
                "/error"
            ).permitAll()
            // 其余所有请求需认证后访问
            .anyRequest().authenticated()
        .and()
        // 启用Spring Security默认表单登录页
        .formLogin()
        .and()
        // 配置登出后跳转首页
        .logout()
            .logoutSuccessUrl("/");
}

2. 调整过滤器优先级

非Spring Boot环境不会自动调整Servlet过滤器顺序,需将Spring Security过滤器链优先级设置为高于Vaadin Servlet,避免Vaadin提前拦截请求。在安全配置类上添加如下注解即可:

@Configuration
@EnableWebSecurity
@Order(Ordered.HIGHEST_PRECEDENCE + 10)
public class SecurityConfig extends WebSecurityConfigurerAdapter {
    // 配置内容见第一步
}

如果使用web.xml配置过滤器,确保springSecurityFilterChain的映射配置在Vaadin Servlet之前。

3. 手动注册Vaadin视图访问检查器

非Spring Boot环境不会自动装配视图级权限检查的Bean,需在配置类中手动注册,同时指定登录页路径:

@Bean
public ViewAccessChecker viewAccessChecker() {
    ViewAccessChecker accessChecker = new ViewAccessChecker();
    accessChecker.setLoginView("/login");
    return accessChecker;
}

4. 启动验证

配置完成后执行启动命令:

mvn jetty:run

启动后访问应用任意路径,未认证状态下会自动跳转至Spring Security默认登录页。默认用户名为user,启动日志中会打印随机生成的临时密码,可通过配置内存用户、JDBC用户源等方式自定义账号密码。

注:VaadinWebSecurityConfigurerAdapter是Spring Boot专属适配类,依赖Boot的自动配置API,非Boot环境不需要使用,手动配置上述规则即可实现完全一致的视图级访问控制能力。


内容的提问来源于stack exchange,提问作者smillied

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.03 08:39:29