keycloak~使用自定义的注册页

打印 上一主题 下一主题

主题 914|帖子 914|积分 2742

添加FormAction的实现
  1. package org.keycloak.phone.authentication.forms;
  2. import org.keycloak.Config;
  3. import org.keycloak.authentication.FormAction;
  4. import org.keycloak.authentication.FormActionFactory;
  5. import org.keycloak.authentication.FormContext;
  6. import org.keycloak.authentication.ValidationContext;
  7. import org.keycloak.forms.login.LoginFormsProvider;
  8. import org.keycloak.models.AuthenticationExecutionModel;
  9. import org.keycloak.models.KeycloakSession;
  10. import org.keycloak.models.KeycloakSessionFactory;
  11. import org.keycloak.models.RealmModel;
  12. import org.keycloak.models.UserModel;
  13. import org.keycloak.provider.ProviderConfigProperty;
  14. import java.util.List;
  15. // 新版注册
  16. public class RegistrationNew implements FormActionFactory, FormAction {
  17.     public static final String PROVIDER_ID = "new-registration";
  18.     private static AuthenticationExecutionModel.Requirement[] REQUIREMENT_CHOICES = {
  19.             AuthenticationExecutionModel.Requirement.REQUIRED, AuthenticationExecutionModel.Requirement.DISABLED };
  20.     @Override
  21.     public String getDisplayType() {
  22.         return "New Registration Form";
  23.     }
  24.     @Override
  25.     public String getReferenceCategory() {
  26.         return null;
  27.     }
  28.     @Override
  29.     public boolean isConfigurable() {
  30.         return false;
  31.     }
  32.     @Override
  33.     public AuthenticationExecutionModel.Requirement[] getRequirementChoices() {
  34.         return REQUIREMENT_CHOICES;
  35.     }
  36.     @Override
  37.     public boolean isUserSetupAllowed() {
  38.         return false;
  39.     }
  40.     @Override
  41.     public String getHelpText() {
  42.         return "New Registration";
  43.     }
  44.     @Override
  45.     public List<ProviderConfigProperty> getConfigProperties() {
  46.         return null;
  47.     }
  48.     @Override
  49.     public FormAction create(KeycloakSession session) {
  50.         return this;
  51.     }
  52.     @Override
  53.     public void init(Config.Scope config) {
  54.     }
  55.     @Override
  56.     public void postInit(KeycloakSessionFactory factory) {
  57.     }
  58.     @Override
  59.     public void close() {
  60.     }
  61.     @Override
  62.     public String getId() {
  63.         return PROVIDER_ID;
  64.     }
  65.     // FormAction
  66.     @Override
  67.     public void buildPage(FormContext formContext, LoginFormsProvider loginFormsProvider) {
  68.       
  69.     }
  70.     @Override
  71.     public void validate(ValidationContext validationContext) {
  72.         validationContext.success();
  73.     }
  74.     @Override
  75.     public void success(FormContext formContext) {
  76.     }
  77.     @Override
  78.     public boolean requiresUser() {
  79.         return false;
  80.     }
  81.     @Override
  82.     public boolean configuredFor(KeycloakSession keycloakSession, RealmModel realmModel, UserModel userModel) {
  83.         return true;
  84.     }
  85.     @Override
  86.     public void setRequiredActions(KeycloakSession keycloakSession, RealmModel realmModel, UserModel userModel) {
  87.     }
  88. }
复制代码
留意:对于注册来说,他的页面必须是register.ftl,然后在页面上点"注册"按钮,就会触发这个后台绑定的FormAction,页面会在register.ftl上举行渲染.
主要方法的作用

在 Keycloak 中,自定义 FormAction 是用来扩展认证流程的一种方式。其中,success 和 validate 是 FormAction 类中的两个方法,具体作用如下:

  • validate 方法:用于验证用户提交的表单数据是否符合要求。在这个方法中,你可以根据本身的逻辑对用户输入的数据举行验证,比如查抄用户名是否唯一、密码强度是否符合要求等。假如验证失败,可以通过抛出非常的方式告知用户并制止继续注册或登录操作。
  • success 方法:在用户提交的表单数据颠末验证通过后,success 方法会被调用。在这个方法中,你可以实验注册用户的逻辑,比如将用户信息保存到数据库中、发送确认邮件等操作。同时,你也可以在该方法中设置一些额外的属性或者实验其他自定义的逻辑。
总结来说,validate 方法用于验证用户提交的数据,确保数据的完整性和精确性;而 success 方法则用于处置惩罚验证通过后的逻辑,完成用户注册或登录所需的操作。通过这两个方法的配合,你可以实现自定义的注册逻辑,并且确保注册过程的安全性和可靠性。
regsiter.ftl表单
  1.         
  2.             
  3.                
  4.                     <form id="kc-form-login" action="${url.registrationAction}" method="post">
  5.                         手机号:<input type="text" name="phoneNumber">
  6.                         
  7.                            
  8.                                 
  9.                                     <a target="_blank" href="https://www.cnblogs.com/${url.loginUrl}">${kcSanitize(msg("backToLogin"))?no_esc}</a>
  10.                                 
  11.                            
  12.                            
  13.                                 <input  type="submit" value="${msg("doRegister")}"/>
  14.                            
  15.                         
  16.                     </form>
  17.                
  18.             
  19.         
  20.    
复制代码
注册SPI,类型为FormActionFactory


设置注册表单


选择新的注册流程



免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

麻花痒

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表