| | |
| | | audit.put("requestMethod", request.getMethodValue()); |
| | | audit.put("requestUri", uri); |
| | | audit.put("requestParams", maskedQuery(request)); |
| | | audit.put("userAccount", mask(username(request))); |
| | | // 审计账号用于追溯操作人,必须保留原始账号;手机号、证件号等请求参数仍按规则脱敏。 |
| | | audit.put("userAccount", username(request)); |
| | | audit.put("clientIp", clientIp(request)); |
| | | int status = exchange.getResponse().getStatusCode() == null ? 200 : exchange.getResponse().getStatusCode().value(); |
| | | audit.put("result", status < 400 ? "SUCCESS" : "FAIL"); |
| | |
| | | key.toLowerCase().matches(".*(password|token|secret|idcard|bank|phone|mobile).*") ? "***" : value)); |
| | | return JSON.toJSONString(values); |
| | | } |
| | | private String mask(String value) { return StringUtils.isBlank(value) ? null : value.length() <= 4 ? "***" : value.substring(0, 3) + "***" + value.substring(value.length() - 2); } |
| | | private String clientIp(ServerHttpRequest request) { String value = request.getHeaders().getFirst("X-Forwarded-For"); return StringUtils.isBlank(value) ? String.valueOf(request.getRemoteAddress()) : value.split(",")[0].trim(); } |
| | | } |