1

当我将 jjwt 安全添加到 Spring Boot 应用程序时,以下对象映射器配置不起作用。

@Configuration
public class CustomObjectMapper extends ObjectMapper {

/**
 * Default serial version id generated.
 */
private static final long serialVersionUID = 1L;

public CustomObjectMapper() {
    this.setSerializationInclusion(Include.NON_EMPTY);
    this.registerModule(new ThreeTenModule());
    this.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false);
    }
}

此处添加的安全依赖项

<dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-security</artifactId>
</dependency>
<dependency>
    <groupId>io.jsonwebtoken</groupId>
    <artifactId>jjwt</artifactId>
    <version>0.7.0</version>
</dependency>
<dependency>
    <groupId>org.springframework.security</groupId>
    <artifactId>spring-security-jwt</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.security.oauth</groupId>
    <artifactId>spring-security-oauth2</artifactId>
</dependency>

正如下面的杰克逊注释在班级/领域级别上工作的那样。

@JsonInclude(Include.NON_EMPTY) 

为什么 bean 配置的自定义对象映射器没有用于序列化和反序列化?任何其他库配置的对象映射器覆盖我的自定义映射器?

4

1 回答 1

0

经过长时间的调查,我注意到@EnableWebMvc 注释的配置 bean 在一个依赖库中可用。并且从这里了解到@EnableWebMvc 禁用了 Spring Boot 的 MVC 自动配置,从而完全控制提供客户 MVC 配置。HTTP 消息转换器也将包含在 Spring MVC 组件中,这反过来会禁用我的自定义杰克逊对象映射器配置。

PS:由于 jjwt 默认导入 jackson 数据绑定依赖,它落在了我的怀疑列表中。感觉很好,我可以 RCA。谢谢。

于 2018-09-22T19:35:54.027 回答