开发喵星球

若依无法对过长userId的用户进行重置密码(166)

用户ID过长会导致用户重置密码出现500错误。

一、BUG复现过程

(1)首先添加一条用户信息
(2)然后加他的ID改为:953223998848253952

(3)然后在用管理界面进行重置密码

会出现500错误。

二、BUG原因分析

经过断点调试分析,发现数据库中的ID和页面中的显示ID不一致导致的这个问题。

三、BUG解决方案

1、局部解决

在对象字段上加注解:

 import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;

  @JsonSerialize(using = ToStringSerializer.class)
  private Long userId;

2、全局解决

ruoyi-framework模块中的config配置目录中增加配置类:JacksonConfig.java

package com.ruoyi.framework.config;


import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import org.springframework.boot.autoconfigure.jackson.Jackson2ObjectMapperBuilderCustomizer;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.converter.json.Jackson2ObjectMapperBuilder;

import java.math.BigInteger;

@Configuration
public class JacksonConfig {
  /**
   * Jackson全局转化long类型为String,解决jackson序列化时传入前端Long类型缺失精度问题
   */
  @Bean
  public Jackson2ObjectMapperBuilderCustomizer jackson2ObjectMapperBuilderCustomizer() {
    Jackson2ObjectMapperBuilderCustomizer cunstomizer = new Jackson2ObjectMapperBuilderCustomizer() {
      @Override
      public void customize(Jackson2ObjectMapperBuilder jacksonObjectMapperBuilder) {
        jacksonObjectMapperBuilder.serializerByType(BigInteger.class, ToStringSerializer.instance);
        jacksonObjectMapperBuilder.serializerByType(Long.class, ToStringSerializer.instance);
      }
    };
    return cunstomizer;
  }
}
   
分类:Java/OOP 作者:无限繁荣, 吴蓉 发表于:2024-04-01 15:07:43 阅读量:115
<<   >>


powered by kaifamiao