SSO其他系统url访问cuba系统时,自动填充cuba登录页面username

A系统登记B系统(cuba)的登录地址url,现 A系统sso使用url?username=xxx的方式访问B系统,希望B系统的登录页面能直接显示username=xxx,请问如何将username填充进登录页面?

你好,用的 CUBA 哪个版本?

cubaVersion = ‘7.2.19’

可以按照下面的步骤:

  1. 按照文档的说明扩展登录界面。
  2. 在登录界面中添加下列代码:
@UiController("login")
@UiDescriptor("ext-login-screen.xml")
@Route("login")
public class ExtLoginScreen extends LoginScreen {
    @Inject
    private TextField<String> loginField;

    private NavigationState state;

    @Subscribe
    public void onBeforeShow(BeforeShowEvent event) {
        state = urlRouting.getState(); // 获取 URL 状态
    }

    
    @Subscribe
    public void afterShow1(AfterShowEvent event) {
        // 获取 URL 参数中的 username 参数,并设置给用户名字段。
        String username = state.getParams().get("username");
        loginField.setValue(username);
    }
}
  1. 然后可以通过这样的地址访问:http://localhost:8080/app/#login?username=user123
  2. 此时,用户的登录名会设置成 user123