Java KeyClope:在RegistrationProfile类formContext.getUser()中返回null
我正在实现自己的自定义Java KeyClope:在RegistrationProfile类formContext.getUser()中返回null,java,keycloak,Java,Keycloak,我正在实现自己的自定义RegistrationProfile类,以便根据在表单中插入的信息授予注册用户特定的角色 我希望在确保表单已验证后授予角色。 因此,我将代码放在success方法中: @Override public void success(FormContext formContext) { UserModel userModel = formContext.getUser(); MultivaluedMap<String, String> formD
RegistrationProfile
类,以便根据在表单中插入的信息授予注册用户特定的角色
我希望在确保表单已验证后授予角色。
因此,我将代码放在success
方法中:
@Override
public void success(FormContext formContext) {
UserModel userModel = formContext.getUser();
MultivaluedMap<String, String> formData = formContext.getHttpRequest().getDecodedFormParameters();
userModel.setFirstName(formData.getFirst(RegistrationPage.FIELD_FIRST_NAME));
userModel.setLastName(formData.getFirst(RegistrationPage.FIELD_LAST_NAME));
userModel.setEmail(formData.getFirst(RegistrationPage.FIELD_EMAIL));
RoleModel roleModel = formContext.getRealm().getRole("user");
userModel.grantRole(roleModel);
}
@覆盖
公共作废成功(FormContext FormContext){
UserModel UserModel=formContext.getUser();
多值Map formData=formContext.getHttpRequest().getDecodedFormParameters();
userModel.setFirstName(formData.getFirst(RegistrationPage.FIELD_FIRST_NAME));
userModel.setLastName(formData.getFirst(RegistrationPage.FIELD_LAST_NAME));
setEmail(formData.getFirst(RegistrationPage.FIELD_EMAIL));
RoleModel RoleModel=formContext.getRealm().getRole(“用户”);
grantRole(roleModel);
}
在方法success(FormContext-FormContext)
中,当我执行FormContext.getUser()
时,该方法返回一个null
有人能帮我理解为什么以及如何解决这个问题吗?可能因为注册用户还没有创建,我得到了一个
null
。但是如何实例化一个用户模型?我找到了一个解决方案:
由于需要首先创建用户,formContext.getUser()
将始终返回null
我必须首先创建一个用户,然后授予他一个角色:
String username = formData.getFirst(RegistrationPage.FIELD_USERNAME);
UserModel user = formContext.getSession().users()
.addUser(formContext.getRealm(), username);
user.setEnabled(true);
user.grantRole(context.getRealm().getRole("user"));
我的代码的灵感来自于本课程的成功
方法