<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      keycloak~在認(rèn)證的action中自定義重定向地址

      場景與實現(xiàn)邏輯

      • 我的登錄接口,在輸入賬號密碼成功后進行中間頁
      • 中間頁可以通過添加Authenticator的實現(xiàn)類來寫邏輯
      • authenticate方法是渲染頁面的,action方法是提交表單后的邏輯
      • context.success()方法表示認(rèn)證成功,將進行重寫向操作
      • 可以通過Response.status(302).header(HttpHeaders.LOCATION, modifyPasswordPage).build()實現(xiàn)自定義的重定向地址
      • 在kc配置中,復(fù)制一個brower認(rèn)證流,為賬號密碼模塊添加一個行為(execution)

      核心代碼

        @Override
        public void authenticate(AuthenticationFlowContext context) {
      
          if (context.getAuthenticationSession().getUserSessionNotes().containsKey("password")) {
            String password = context.getAuthenticationSession().getUserSessionNotes().get("password").toLowerCase();
            if (password.matches(regex)) {
              context.success();
              return;
            }
          }
      
          Response challenge = context.form().createForm("login-simple-password-alert.ftl");
          context.challenge(challenge);
        }
      
        @Override
        public void action(AuthenticationFlowContext context) {
          MultivaluedMap<String, String> formData = context.getHttpRequest().getDecodedFormParameters();
          if (formData.containsKey("submitType") && formData.get("submitType").get(0).equals("1")) {
            AuthenticatorConfigModel authenticatorConfigModel =
                KeycloakUtil.getAuthenticatorConfigByAlias(context.getSession(), V6_CONFIG);
            String mainSite = "https://www.abc.com";
            if (authenticatorConfigModel.getConfig().containsKey(MAIN_SITE) &&
                StringUtils.isNotBlank(authenticatorConfigModel.getConfig().get(MAIN_SITE))) {
              mainSite = authenticatorConfigModel.getConfig().get(MAIN_SITE);
            }
            if (mainSite.endsWith("/")) {
              mainSite = mainSite.substring(0, mainSite.length() - 1);
            }
            context.success();
            String modifyPasswordPage = mainSite + "/usercenter/info";
            Response response = Response.status(302)
                .header(HttpHeaders.LOCATION, modifyPasswordPage).build();
            context.challenge(response);
            return;
          }
          context.success();
        }
      

      登錄中間頁面login-simple-password-alert.ftl

      • src\main\resources\theme\custom\login\
      • 這個目錄下有皮膚文件login.ftl和中間頁文件login-simple-password-alert.ftl
      • kc后臺為指定客戶端或者領(lǐng)域設(shè)置登錄皮膚為custom
      • login-simple-password-alert.ftl如下:
      <form id="kc-form-login" action="${url.loginAction}" method="post">
        <input type="hidden" id="submitType" name="submitType" value="0">
        <a class="btn-register" href="javascript:void(0)" onclick="submit(0)">默認(rèn)登錄后的跳換</a>
        <a class="btn-register" href="javascript:void(0)" onclick="submit(1)">登錄后去個人中心</a>
      </form>
      
      <script>
          function submit(val) {
              document.getElementById("submitType").value=val;
              document.getElementById('kc-form-login').submit();
          }
      </script>
      

      自定義登錄邏輯的KC配置如下

      posted @ 2024-04-03 16:52  張占嶺  閱讀(443)  評論(2)    收藏  舉報
      主站蜘蛛池模板: 亚洲熟女精品一区二区| 夜鲁鲁鲁夜夜综合视频欧美| 国产精品福利自产拍在线观看 | 亚洲乱码国产乱码精品精| 精品一区二区三区在线播放视频 | 亚洲国产制服丝袜先锋| 国产一区二区三区18禁| 深夜精品免费在线观看| 少妇人妻偷人精品无码视频新浪| 国产无遮挡猛进猛出免费软件| 亚洲日韩精品无码一区二区三区| 午夜天堂精品久久久久| 福利一区二区不卡国产| 亚洲色最新高清AV网站| 国产网友愉拍精品视频手机| 俄罗斯美女真人性做爰| 蜜臀av无码一区二区三区| 国产欧美精品区一区二区三区| 国产亚洲亚洲国产一二区| 91亚洲人成手机在线观看| 少妇人妻偷人精品系列| 成人精品视频一区二区三区| 日本中文字幕亚洲乱码| 日韩精品有码中文字幕| 色悠久久网国产精品99| 人妻人人妻a乱人伦青椒视频 | 一区二区三区无码视频免费福利 | 国产精品制服丝袜白丝| 激情影院内射美女| 中文字幕日韩有码第一页| 独山县| 国产成人高清亚洲一区二区| 九九热久久只有精品2| 亚洲一二三四区中文字幕| 亚洲欧美国产精品专区久久| 中文字幕丰满伦子无码ab| 国产成年码AV片在线观看| 亚洲乱理伦片在线观看中字| 亚洲精品国产精品不乱码| 亚洲 a v无 码免 费 成 人 a v| 一区二区三区AV波多野结衣|