请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

为什么Long类型字段返回前端之前都要被IdUtil加密?

/**
 * Id自动加密的JSON序列化器
 * 用于返回实体Long类型ID字段的自动序列化
 */
public class IdEncryptSerializer extends JsonSerializer<Long> {
    /**
     * Method that can be called to ask implementation to serialize
     * values of type this serializer handles.
     *
     * @param value       Value to serialize; can <b>not</b> be null.
     * @param gen         Generator used to output resulting Json content
     * @param serializers Provider that can be used to get serializers for
     *                    serializing Objects value contains, if any.
     */
    @Override
    public void serialize(Long value, JsonGenerator gen, SerializerProvider serializers) throws IOException {
        if (Objects.isNull(value)) {
            gen.writeString(StringUtils.EMPTY);
        } else {
            gen.writeString(IdUtil.encrypt(value));
        }
    }

}

没明白这个序列化器的用意,Long类型不加密会怎样?

正在回答

1回答

因为这个涉及到数据的id 出于安全考虑 要做一次加密 而且 long 类型太长前端会做截断 综合原因 就在返回之前加密了

0 回复 有任何疑惑可以回复我~
  • 老师这个long 类型转换为字符串,不是为了前端Long接收的时候,精度丢失吗?
    回复 有任何疑惑可以回复我~ 2023-08-17 10:24:21
  • RubinChu 回复 慕的岸 #2
    可以转化成字符串,我们是在这个基础上加了一个加密的逻辑,来保证安全性哈
    回复 有任何疑惑可以回复我~ 2023-08-17 10:35:50
  • 慕的岸 回复 RubinChu #3
    如果不转换成字符串的话,long 类型的直接返回给前端不会丢失精度?
    回复 有任何疑惑可以回复我~ 2023-08-17 10:43:19
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信