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

Vaadin 24如何在多个Vaadin项目中复用独立登录工程?

Vaadin 24 登录工程复用问题解决方案

1. 触发登录工程中的LoginView

要在后台管理工程中调用登录工程的LoginView,核心是让主工程识别并加载登录工程的Spring Security配置与Vaadin视图,具体步骤如下:

  • 确保Spring Security配置可被扫描:登录工程中的Security配置类(使用SecurityFilterChain或传统配置方式)需标注@Configuration和@EnableWebSecurity,同时主工程要能扫描到该类。可在主工程的@SpringBootApplication注解中扩展扫描包路径:
    @SpringBootApplication(scanBasePackages = {"com.your.login.module", "com.your.admin.module"})
    public class AdminApplication {
        public static void main(String[] args) {
            SpringApplication.run(AdminApplication.class, args);
        }
    }
    
  • 绑定登录页面路由:登录工程的LoginView需添加@Route("login")注解明确路由地址,同时在Security配置中指定登录页为该路由:
    @Bean
    public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
        http
            .authorizeHttpRequests(auth -> auth
                .requestMatchers(VaadinWebSecurity.getDefaultLoginUrl()).permitAll()
                .anyRequest().authenticated()
            )
            .formLogin(form -> form
                .loginPage("/login") // 指向登录工程的LoginView路由
            );
        VaadinWebSecurity.configure(http);
        return http.build();
    }
    
  • 确保Vaadin视图被加载:只要Spring能扫描到登录工程的LoginView类(通过包扫描配置),Vaadin会自动注册该视图的路由,主工程访问/login即可触发登录界面。

2. 登录成功后重定向至主工程默认路由

默认情况下,Spring Security登录成功后会跳转至用户此前尝试访问的受保护页面;若直接访问登录页,需手动配置默认跳转地址:

  • 在登录工程的Security配置中,强制设置登录成功后跳转至主工程的/路由:
    @Bean
    public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
        http
            .authorizeHttpRequests(auth -> auth
                .requestMatchers(VaadinWebSecurity.getDefaultLoginUrl()).permitAll()
                .anyRequest().authenticated()
            )
            .formLogin(form -> form
                .loginPage("/login")
                .defaultSuccessUrl("/", true) // 强制跳转到主工程默认路由
            );
        VaadinWebSecurity.configure(http);
        return http.build();
    }
    
    第二个参数true表示无论用户是直接访问登录页还是被拦截跳转过来,登录成功后都强制跳转到主工程的/路由。

额外注意事项

  • 登录工程中的核心Bean(如UserDetailsService、PasswordEncoder)需标注@Service或@Component,确保主工程能正确注入这些依赖。
  • 主工程需自行实现AppShellConfigurator,用于配置应用全局页面设置(如标题、favicon),因为登录工程已移除该类。
  • 测试时先启动主工程,访问/login确认登录界面正常显示,登录后检查是否自动跳转到主工程的/路由。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 06:34:56