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

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

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

      springboot~uaa~scope對實體的字段添加限制

      scope授權思路

      通過實現JsonSerializer抽象類的serialize方法來進行指定類型的序列化,在序列化中對持有ScopeSet注解的字段進行解析,當沒有對象的scope時,
      對字段不進行渲染,從而保護了字段資源。

      之前的嘗試MappingJackson2HttpMessageConverter

      之前使用MappingJackson2HttpMessageConverter的定義,將@ScopeSet進行檢查,并對字段按著scope值進行輸出,最后的結果是失敗的,因為
      MappingJackson2HttpMessageConverter只在程序啟動時執行一次,將類對應的字段添加到它的字典之后,如果下次有相同的實體字段,就不會去再執行
      MappingJackson2HttpMessageConverter了,而我們要求的是每次序列化時都需要進行重新的解析,以查詢當前用戶的scope是否有對應的權限。

      JsonSerializer的實現

      接口在每次從服務端響應時都需要使用jackson的JsonSerializer功能,它有默認的實現方式,而我們可以重新去實現自己的方法,它在每次接口響應時都會被執行
      ScopeSet

      @Target({ElementType.FIELD})
      @Retention(RetentionPolicy.RUNTIME)
      public @interface ScopeSet {
          /**
           * 授權范圍.
           *
           * @return
           */
          String value() default "";
      }
      
      

      在實體的和字段上添加scope
      1
      ScopeJsonSerializer序列化

      @Slf4j
      public class ScopeJsonSerializer<T> extends JsonSerializer<T> {
          @SneakyThrows
          @Override
          public void serialize(T t, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException {
              //引用類型
              jsonGenerator.writeStartObject();
              for (Field field : t.getClass().getDeclaredFields()) {
                  field.setAccessible(true);
                  if (field.getAnnotation(ScopeSet.class) != null) {
                      String value = field.getAnnotation(ScopeSet.class).value();
                      if (Arrays.asList(SecurityUser.getScope()).contains(value)) {
                          jsonGenerator.writeObjectField(field.getName(), field.get(t));
                      }
                  } else {
                      jsonGenerator.writeObjectField(field.getName(), field.get(t));
                  }
              }
              jsonGenerator.writeEndObject();
          }
      }
      

      在DTO實體中使用,先在實體上聲明注解@JsonSerialize(using = ScopeJsonSerializer.class),之后在需要保護的字段上添加@ScopeSet注解即可。

      當你的token.scope沒有read時,你的字段email將不會被輸出
      2
      感謝各位閱讀!

      posted @ 2020-12-01 16:10  張占嶺  閱讀(542)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 亚洲综合无码明星蕉在线视频| 久久精品国产久精国产| 风韵丰满熟妇啪啪区老熟熟女| 国产小受被做到哭咬床单GV| 202丰满熟女妇大| 日韩理伦片一区二区三区| 精品中文人妻在线不卡| 亚洲国产日韩a在线播放| 国产精品v欧美精品∨日韩 | 天堂网亚洲综合在线| 免费国产黄线在线观看| 麻豆妓女爽爽一区二区三| 无码视频一区二区三区| 无码国内精品久久人妻蜜桃| 色噜噜亚洲精品中文字幕| 国产精品国产三级国产试看| a级黑人大硬长爽猛出猛进| 大同市| 一亚洲一区二区中文字幕| 国产欧美在线一区二区三| 国产精品国产三级国快看| 超清无码一区二区三区| 人妻饥渴偷公乱中文字幕| 67194熟妇在线观看线路| 884aa四虎影成人精品| 亚洲精品国自产拍影院| 亚洲精品无码久久一线| 永久无码天堂网小说区| 亚洲午夜av久久久精品影院| 人妻日韩人妻中文字幕| 麻花传媒在线观看免费| 国产免费午夜福利757| 色午夜一av男人的天堂| 国产偷国产偷亚洲高清日韩| 精品中文人妻中文字幕| 国产偷倩视频| 亚洲国产成人久久综合同性| 国产二区三区不卡免费| 高安市| 国产成人剧情AV麻豆果冻| 97精品伊人久久大香线蕉APP |