2015-11-15 3 views
1

В настоящее время я использую довольно ванильную установку Spring Security Oauth2 версии 2.0.7.RELEASE с JdbcTokenStore и недавно столкнулся с интересной проблемой.Spring Security OAuth2 - хранимый объект аутентификации

Я понимаю, что при создании и хранении токена доступа объект Authentication сериализуется и сохраняется в базе данных. Я понимаю, что это необходимо и используется, когда токен доступа позже используется в запросе. Проблема в том, что мой объект Authentication (пользовательский интерфейс UserDetails для Spring Security) связан с другими объектами в домене моего приложения. (примерный граф объекта может выглядеть как Аутентификация -> com.myapp.User -> com.myapp.PhoneNumber)

Я должен был внести некоторые изменения в реализацию упомянутых объектов и заметил, что объекты Authentication, сериализованные и сохраненные в база данных до моего изменения больше не десериализуется, что имеет смысл, потому что моя объектная модель изменилась.

Что такое рекомендуемый способ управления этим сценарием? Есть ли способ получить объект Authentication для сериализации в JSON, а не в двоичном формате? Я склоняюсь к удалению моей информации из моего объекта Authentication, но мне интересно, есть ли лучший подход?

+0

Просьба представить фрагменты кода. – SyntaX

+0

Арг никогда, этот вопрос может быть признан недействительным. Подумав об этом, я понял, что вы просто просто сбиваете содержимое таблицы OAUTH_ACCESS_TOKEN после изменения вашей модели. D'о! – simonl

ответ

0

Чтобы закрыть цикл - подход, который я использовал, заключался в расширении JdbcTokenStore и переопределении методов serializeAuthentication и deserializeAuthentication для выполнения сериализации/десериализации с использованием Джексона. Затем в моей объектной модели I объекты, которые действительно не нужны для аутентификации пользователя.