中文字幕精品亚洲无线码二区,国产黄a三级三级三级看三级,亚洲七七久久桃花影院,丰满少妇被猛烈进入,国产小视频在线观看网站

keycloak~管理平臺的查詢bug與自定(ding)rest中文檢(jian)索(suo)

對(dui)于keycloak來說,它的(de)(de)(de)(de)管理平(ping)臺在它的(de)(de)(de)(de)源碼中的(de)(de)(de)(de)admin-client中,它會定義(yi)相關(guan)的(de)(de)(de)(de)rest接口規范(fan);在我們使用keycloak管理平(ping)臺時,其中有一個組(zu)的(de)(de)(de)(de)查詢,在我們查詢中文組(zu)時,它是(shi)不支持的(de)(de)(de)(de),經過測試(shi)和mysql日(ri)志監控(kong)得到原因:

  1. keycloak rest使用javax.ws.rs包下面的注解,在使用@QueryParam注解來接收url參數時,當出現中文時,它實現是一個urlEncode的字符
  2. 它本身不會對字段進行urlDecode的操作,所以我們自己要做;而spring框架幫我們作了這事,我們自己不用做
  • urlDecode截圖之前和之后
  • 手動添加urlDecode代碼
@GET
@Path("search")
@NoCache
@Produces({MediaType.APPLICATION_JSON})
@Encoded
public Response search(@QueryParam("name") String name) throws UnsupportedEncodingException {
    if (StringUtils.isEmpty(name)) {
        throw new ClientErrorException("name不能為空", Response.Status.BAD_REQUEST);
    }
    TypedQuery<GroupEntity> query = em.createQuery("select u from GroupEntity u where u.realm = :realm and  lower(u.name)  = :name", GroupEntity.class);
    log.info("group name:" + name);
    name = URLDecoder.decode(name, "utf-8");
    log.info("group name 2:" + name);
    query.setParameter("name", name.trim().toLowerCase());
    query.setParameter("realm", session.getContext().getRealm().getName());
    List<GroupEntity> result = query.getResultList();
    return Response.ok(result, APPLICATION_JSON_TYPE).build();
}

查詢中文組

[
    {
        "id": "d355cb9e-9557-4465-9eba-44f20b0c24ea",
        "name": "測試",
        "parentId": " ",
        "realm": "fabao",
        "attributes": []
    }
]
posted @ 2021-07-09 08:50  張占嶺  閱讀(321)  評論(0)    收藏  舉報