我需要在“ 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:-/