ToB企服应用市场:ToB评测及商务社交产业平台
标题:
keycloak~使用自定义的注册页
[打印本页]
作者:
麻花痒
时间:
2024-7-12 16:37
标题:
keycloak~使用自定义的注册页
添加FormAction的实现
package org.keycloak.phone.authentication.forms;
import org.keycloak.Config;
import org.keycloak.authentication.FormAction;
import org.keycloak.authentication.FormActionFactory;
import org.keycloak.authentication.FormContext;
import org.keycloak.authentication.ValidationContext;
import org.keycloak.forms.login.LoginFormsProvider;
import org.keycloak.models.AuthenticationExecutionModel;
import org.keycloak.models.KeycloakSession;
import org.keycloak.models.KeycloakSessionFactory;
import org.keycloak.models.RealmModel;
import org.keycloak.models.UserModel;
import org.keycloak.provider.ProviderConfigProperty;
import java.util.List;
// 新版注册
public class RegistrationNew implements FormActionFactory, FormAction {
public static final String PROVIDER_ID = "new-registration";
private static AuthenticationExecutionModel.Requirement[] REQUIREMENT_CHOICES = {
AuthenticationExecutionModel.Requirement.REQUIRED, AuthenticationExecutionModel.Requirement.DISABLED };
@Override
public String getDisplayType() {
return "New Registration Form";
}
@Override
public String getReferenceCategory() {
return null;
}
@Override
public boolean isConfigurable() {
return false;
}
@Override
public AuthenticationExecutionModel.Requirement[] getRequirementChoices() {
return REQUIREMENT_CHOICES;
}
@Override
public boolean isUserSetupAllowed() {
return false;
}
@Override
public String getHelpText() {
return "New Registration";
}
@Override
public List<ProviderConfigProperty> getConfigProperties() {
return null;
}
@Override
public FormAction create(KeycloakSession session) {
return this;
}
@Override
public void init(Config.Scope config) {
}
@Override
public void postInit(KeycloakSessionFactory factory) {
}
@Override
public void close() {
}
@Override
public String getId() {
return PROVIDER_ID;
}
// FormAction
@Override
public void buildPage(FormContext formContext, LoginFormsProvider loginFormsProvider) {
}
@Override
public void validate(ValidationContext validationContext) {
validationContext.success();
}
@Override
public void success(FormContext formContext) {
}
@Override
public boolean requiresUser() {
return false;
}
@Override
public boolean configuredFor(KeycloakSession keycloakSession, RealmModel realmModel, UserModel userModel) {
return true;
}
@Override
public void setRequiredActions(KeycloakSession keycloakSession, RealmModel realmModel, UserModel userModel) {
}
}
复制代码
留意:对于注册来说,他的页面必须是register.ftl,然后在页面上点"注册"按钮,就会触发这个后台绑定的FormAction,页面会在register.ftl上举行渲染.
主要方法的作用
在 Keycloak 中,自定义 FormAction 是用来扩展认证流程的一种方式。其中,success 和 validate 是 FormAction 类中的两个方法,具体作用如下:
validate 方法:用于验证用户提交的表单数据是否符合要求。在这个方法中,你可以根据本身的逻辑对用户输入的数据举行验证,比如查抄用户名是否唯一、密码强度是否符合要求等。假如验证失败,可以通过抛出非常的方式告知用户并制止继续注册或登录操作。
success 方法:在用户提交的表单数据颠末验证通过后,success 方法会被调用。在这个方法中,你可以实验注册用户的逻辑,比如将用户信息保存到数据库中、发送确认邮件等操作。同时,你也可以在该方法中设置一些额外的属性或者实验其他自定义的逻辑。
总结来说,validate 方法用于验证用户提交的数据,确保数据的完整性和精确性;而 success 方法则用于处置惩罚验证通过后的逻辑,完成用户注册或登录所需的操作。通过这两个方法的配合,你可以实现自定义的注册逻辑,并且确保注册过程的安全性和可靠性。
regsiter.ftl表单
<form id="kc-form-login" action="${url.registrationAction}" method="post">
手机号:<input type="text" name="phoneNumber">
<a target="_blank" href="https://www.cnblogs.com/${url.loginUrl}">${kcSanitize(msg("backToLogin"))?no_esc}</a>
<input type="submit" value="${msg("doRegister")}"/>
</form>
复制代码
注册SPI,类型为FormActionFactory
设置注册表单
选择新的注册流程
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/)
Powered by Discuz! X3.4