Spring безопасности имеет базовый класс, который представляет аутентификацией пользователя (org.springframework.security.core.userdetails.User
):Упорство org.springframework.security.core.userdetails.User или UserDetails
Модели основной пользовательской информации извлеченной с помощью UserDetailsService.
Разработчики могут использовать этот класс напрямую, подклассифицировать его или написать свою собственную реализацию UserDetailsс нуля.
В большинстве примеров по Интернету, например here люди обычно создают отдельный класс для персистенции, то есть com.mkyong.users.model.User
в примере. Этот класс не распространяется на пружинах безопасности один, так что теперь у нас есть два пользователя, один для упорства и один представляет аутентификацию пользователя в системе, все, что мы делаем это:
- Получить сохраняемости пользователя по имени пользователя и пароль
- поля Копирование к прыжку пользователя и вернуть его
Итак, мой вопрос, в чем смысл иметь больше одного объекта пользователя? Разве не лучше ли продлить весеннюю безопасность пользователя и сохранить его вместо этого? Это может быть невозможно с аннотациями hibernate/jpa, потому что мы явно не можем помещать аннотации в весенний код безопасности, однако это можно сделать с помощью файлов сопоставления. Еще одна проблема заключается в том, что мы не должны возвращать объект спящего режима из службы, чтобы избежать всех связанных с спящим режимами проблем вне уровня сервиса, поэтому, если я продлю весенний пользователь и сделаю его сущностью, мне все равно понадобится какой-то POJO для возврат от UserDetailsService
. Это то, почему нам нужны два объекта User?
P.s. ссылка на документацию ценится
Ваша модель должна быть отделена от библиотек, которые вы используете.Рассмотрим, что новый менеджер-разработчик хочет, чтобы проект был перенесен с Spring на EJB, тогда вам не нужно изменять ВСЕ (pojo, dao, sevice ...) –