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

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

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

      keycloak~AbstractJsonUserAttributeMapper的作用

      AbstractJsonUserAttributeMapper

      它是一個抽象類,用來更新條件更新用戶屬性(user_attribute)的信息,我們在實現自己的mapper時,需要關注3個方法,下面分別介紹一下:

      getCompatibleProviders方法

      它用來直指你的mapper是綁定到哪個認證服務下面的,即這個mapper支持的provider,例如你想在微信登錄后執行這個mapper,你就把微信的provider.id寫到這個方法里返回它即可

      create方法

      這個比較簡單,主要用來返回當前mapper的實例對象

      updateBrokeredUser方法

      這是屬性綁定的核心方法,用來解析第三方返回的json數據與你用戶屬性和用戶實體里的字段的對應關系,你可以理解為字段映射的過程

      實例

      • 更新已綁定過的用戶的firstName和屬性表里的wechat-unionId字段
      public class CustomUserAttributeMapper extends AbstractJsonUserAttributeMapper {
        public static final String PROVIDER_ID = "custom-user-attribute-mapper";
        private static final String[] cp = new String[]{WeiXinIdentityProviderFactory.PROVIDER_ID};
        private static final Logger logger = Logger.getLogger(CustomUserAttributeMapper.class);
      
        @Override
        public String[] getCompatibleProviders() {
          return cp;
        }
      
        @Override
        public String getId() {
          return PROVIDER_ID;
        }
        // 更新已經綁定過的老用戶的屬性
        @Override
        public void updateBrokeredUser(KeycloakSession session, RealmModel realm, UserModel user, IdentityProviderMapperModel mapperModel, BrokeredIdentityContext context) {
      
          user.setFirstName(context.getFirstName());
      
          // 擴展屬性
          user.setSingleAttribute("wechat-unionId", context.getBrokerUserId());
        }
        @Override
        public CustomUserAttributeMapper create(KeycloakSession session) {
          logger.info("CustomUserAttributeMapper.create");
          return new CustomUserAttributeMapper();
        }
      }
      
      
      • 注冊這個mapper到SPI容器
      # resources/META-INFO/services/org.keycloak.broker.provider.IdentityProviderMapper文件
      org.keycloak.broker.provider.IdentityProviderMapper
      
      • 微信掃碼之后,我們可以看到用戶屬性已經加上了

      AbstractJsonUserAttributeMapper的好處

      • 不需要修改第三方登錄的核心邏輯
      • 符合OCP原則,對擴展開放
      • 符合SRP原則,一個類只做一件事

      不使用AbstractJsonUserAttributeMapper

      • 代碼耦合到AbstractOAuth2IdentityProvider類里,重寫它的updateBrokeredUser方法,它只會更新已綁定過的老用戶的信息。
        @Override
        public void updateBrokeredUser(
            KeycloakSession session, RealmModel realm, UserModel user, BrokeredIdentityContext context) {
          // 擴展屬性
          user.setSingleAttribute("unionId", context.getBrokerUserId());
          user.setSingleAttribute("latestTime", LocalDateTime.now().toString());
        }
      
      posted @ 2023-07-17 13:06  張占嶺  閱讀(168)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 亚洲最大成人在线播放| 亚洲黄色第一页在线观看| 精品亚洲综合一区二区三区| 国产亚洲精品久久久久久大师| 国产精品一区二区中文| 国产精品午夜福利免费看| 91高清免费国产自产拍| 久久这里有精品国产电影网| 日韩有码中文在线观看| 色综合久久综合香蕉色老大| 亚洲国产成人精品福利无码| 国产仑乱无码内谢| 日日猛噜噜狠狠扒开双腿小说| 色吊丝二区三区中文字幕| 国产成人一区二区三区影院动漫| 黑人巨大亚洲一区二区久| 久久综合97丁香色香蕉| 免费人成再在线观看视频| 日韩中文字幕免费在线观看| 精品国产亚洲区久久露脸| 亚洲天堂亚洲天堂亚洲色图| 好紧好爽午夜视频| 国产av成人精品播放| 中文字幕色偷偷人妻久久| 噜噜噜噜私人影院| 日韩精品中文字幕有码| 日韩视频一区二区三区视频| 亚洲伊人久久精品影院| 国产在线午夜不卡精品影院 | 美女高潮黄又色高清视频免费| 一个色综合亚洲热色综合| 欧美巨大极度另类| 潞城市| 久久亚洲精品11p| 99久久久国产精品消防器材| 亚洲女同精品久久女同| 亚洲综合色一区二区三区| 姐姐6电视剧在线观看| 亚洲午夜爱爱香蕉片| 中文无码热在线视频| 又黄又无遮挡AAAAA毛片|