Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/395.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java KeyClope:在RegistrationProfile类formContext.getUser()中返回null_Java_Keycloak - Fatal编程技术网

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"));
我的代码的灵感来自于本课程的
成功
方法