HTTP调用获取一个UserDetails报错。

来源:8-1 课程总结

他门说这就是人生

2019-12-13

错误信息:

feign.codec.DecodeException: Type definition error: [simple type, class org.springframework.security.core.GrantedAuthority]; nested exception is com.fasterxml.jackson.databind.exc.InvalidDefinitionException: Cannot construct instance of `org.springframework.security.core.GrantedAuthority` (no Creators, like default construct, exist): abstract types either need to be mapped to concrete types, have custom deserializer, or contain additional type information

 at [Source: (PushbackInputStream); line: 1, column: 954] (through reference chain: com.gaojingsi.record.common.domain.vo.SimpleResponse["data"]->com.gaojingsi.record.common.domain.SysUser["authorities"]->java.util.ArrayList[2])

我是在授权服务器用Feign去获取用户服务里的UserDetails实体,把fallback去掉以后,看到了错误,如上。

仿佛原因是我的UserDetails里的权限字段(public Collection<? extends GrantedAuthority> getAuthorities()
)没法反序列化到实体里。想这个情况应该怎么办呢?好像很复杂。

写回答

1回答

我要当学霸丶

2019-12-14

我今天也遇到了,原因很简单,因为GrantedAuthority没有无参构造方法,只要新写一个实体类继承GrantedAuthority,然后你的User里的权限泛型是你新写的实体就解决了

1
3
他门说这就是人生
老哥,回我一下啊,谢谢。
2019-12-18
共3条回复

Spring Cloud微服务安全实战 可落地的安全方案

从API到复杂微服务场景,实战部署可落地的安全方案。

1029 学习 · 370 问题

查看课程