A系统登记B系统(cuba)的登录地址url,现 A系统sso使用url?username=xxx的方式访问B系统,希望B系统的登录页面能直接显示username=xxx,请问如何将username填充进登录页面?
你好,用的 CUBA 哪个版本?
cubaVersion = ‘7.2.19’
可以按照下面的步骤:
- 按照文档的说明扩展登录界面。
- 在登录界面中添加下列代码:
@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);
}
}
- 然后可以通过这样的地址访问:http://localhost:8080/app/#login?username=user123
- 此时,用户的登录名会设置成
user123