api接口针对id字段的加密-数字ID变字符串

api接口针对id字段的加密-数字ID变字符串效果图 语言 JAVA 框架 SpringBoot 说明 无需其它配置 按下面参考类即可实现接口返回 ID 变为随机密文 对业务无侵入建议 加密的 KEY 最好是用户登录成功之后再生成一个随机的 KEY 安全性更高实现代码 注解 Targ

欢迎大家来到IT世界,在知识的湖畔探索吧!

效果图:

api接口针对id字段的加密-数字ID变字符串

欢迎大家来到IT世界,在知识的湖畔探索吧!

语言:JAVA

框架:SpringBoot

说明:

无需其它配置,按下面参考类即可实现接口返回ID变为随机密文,对业务无侵入

建议:

加密的KEY最好是用户登录成功之后再生成一个随机的KEY,安全性更高

实现代码:

/ 注解 / @Target(ElementType.FIELD) @Retention(RetentionPolicy.RUNTIME) @JacksonAnnotationsInside @JsonSerialize(using = IdHashSerializer.class) @JsonDeserialize(using = IdHashDeserializer.class) public @interface IdHash { }

欢迎大家来到IT世界,在知识的湖畔探索吧!

欢迎大家来到IT世界,在知识的湖畔探索吧!/ 加密类 / @Slf4j public class IdHashSerializer extends JsonSerializer 
  
    { private HttpServletRequest request; public IdHashSerializer(HttpServletRequest request) { // Spring会自动注入 this.request = request; } @Override public void serialize(Long value, JsonGenerator gen, SerializerProvider serializers) throws IOException { if(value == null) return; Object secretKey = request.getAttribute("D-Secret-Key"); //// 全局KEY 或 用户登录成功生成随机KEY if(secretKey == null) { gen.writeNumber(value); return; } try { ////// 加密算法参考 gen.writeString(AesUtils.urlEncrypt(value.toString(), secretKey.toString())); } catch (Exception e) { log.warn("[idhash] serialize fail. value: {}, uid: {}", value, request.getAttribute("D-User-Id")); throw new KnownException("90001", "无效的请求"); } } } 
  
/ 解密类 / @Slf4j public class IdHashDeserializer extends JsonDeserializer 
  
    { private HttpServletRequest request; public IdHashDeserializer(HttpServletRequest request) { this.request = request; } @Override public Long deserialize(JsonParser p, DeserializationContext ctxt) throws IOException { String value = p.getText(); if(StringUtils.isEmpty(value)) { return null; } Object secretKey = request.getAttribute("D-Secret-Key"); //// 全局KEY 或 用户登录成功生成随机KEY if(secretKey != null) { try { return Long.parseLong(AesUtils.urlDecrypt(value, secretKey.toString())); } catch (Exception e) { log.warn("[idhash] deserialize fail. value: {}, uid: {}", value, request.getAttribute("D-User-Id")); throw new KnownException("90002", "无效的请求,请刷新页面后重试"); } } return Long.parseLong(value); } } 
  

使用示例:

欢迎大家来到IT世界,在知识的湖畔探索吧!@Getter @Setter @Schema(description = "保存-菜单") public class SaveMenuDto { @IdHash/ 注解 / @Schema(description = "菜单ID") private Long id; @IdHash/ 注解 / @Schema(description = "上级菜单ID") @JsonSetter(nulls = Nulls.SKIP) private Long pid = 0L; ... }
@Getter @Setter public class QueryTreeVo implements BaseVo { @IdHash/ 注解 / private Long id; private String title; private Integer status; private Boolean leaf = true; } 

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://itzsg.com/117478.html

(0)
上一篇 9小时前
下一篇 9小时前

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们YX

mu99908888

在线咨询: 微信交谈

邮件:itzsgw@126.com

工作时间:时刻准备着!

关注微信