Я пытаюсь сделать снимок экземпляра аутентификации. (Это для запланированного задания Quartz.) Согласно документации, я регистрирую SecurityJackson2Modules в своем сопоставителе объектов. Это отлично работает как для сериализации, так и для десериализации, если я использую ванильный ObjectMapper. Однако если я использую автоматически настроенный Spring, я получаю исключение при десериализации из класса PreAuthenticatedAuthenticationToken, а именно в этом объекте:
Код: Выделить всё
{"@class":"org.springframework.security.core.authority.SimpleGrantedAuthority","authority":"ROLE_Corporate_CLIENT"}
В рабочем случае это правильно десериализуется в SimpleGrantedAuthority, а в нерабочем случае это приводит только к HashMap. Судя по всему, в обоих случаях зарегистрирован миксин SimpleGrantedAuthority, который должен обрабатывать этот фрагмент JSON, однако по какой-то причине он не срабатывает в случае автонастройки Spring.
Поэтому должно быть может быть какая-то принципиальная разница в способе настройки Spring и vanilla ObjectMapper. Проблема в том, что я понятия не имею, как отладить такого рода проблемы. Я попытался вручную зарегистрировать в ванильном картографе те же модули, что и в моем автоконфигурированном, но десериализация все равно продолжала работать. После этого у меня закончились идеи.
Вот явная конфигурация ванильного картографа:
Код: Выделить всё
val modules = SecurityJackson2Modules.getModules(loader)
val mapper = ObjectMapper().registerKotlinModule()
mapper.registerModules(modules)
Показать конфигурацию сопоставителя Spring сложнее, потому что, очевидно, я не настраиваю его сам, поэтому лучшее, что я могу сделать, это показать соответствующие (я думаю) части сопоставителя из отладчик:
Подробнее здесь:
https://stackoverflow.com/questions/784 ... ty-classes