摇摇欲坠-隐藏字段类型

时间:2019-03-04 23:06:13

标签: java spring swagger mustache custom-field-type

我需要在“ toString()”实现中隐藏值。原因很简单;我想从任何可能的日志记录中隐藏密码原始值。 我也尝试使用

- type: string
- format: password

但这仅用于Swagger-UI显示密码​​文本字段。 有什么办法可以实现这种行为?我们正在使用.mustache模板,但找不到任何要使用的局部/项目/名称。 谢谢

编辑: 好的,我分享了我当前的解决方案,但不是最佳解决方案。 我创建了一个Java Bean“密码”(非常简短的演示):

public class Password {
   private String value;
   public Password(String requestParam) {
      value = requestParam;
   }
   public String toString() {
      return "Password{<hidden||hashed value>}";
   }
}

然后在swagger conf(swagger-codegen-config.json)中,我导入了一个映射:

{
   ...other configs such as lang, dateLibrary and so on...
   "importMappings": {
      "Password": "com.test.example.swagger.model.Password"
   }
}

该密码定义已在swagger.yml中使用:

...
definitions:
  Request:
    type: object
    properties:
      password:
        $ref: '#/definitions/Password'
      username:
        type: string
...

好吧,所以swagger-codegen将生成带有密码字段的'Request'类; Spring处理一个密码的参数构造函数;来自httpRequest的字符串已正确映射到Password实例;记录不包含原始值 但 swagger-UI认为用户应该放置一个对象作为密码,而不是String:-/

0 个答案:

没有答案