Почему Spring дублирует поля в аутентификации и UserDetails? - PullRequest
5 голосов
/ 28 марта 2012

При реализации некоторых аспектов безопасности в Spring Security я заметил, что и Authentication, и UserDetails имеют повторяющиеся методы, такие как getAuthorities, getCredentials и т. Д..

Какова цель этого?Мне кажется, что это бесполезная избыточность.

Редактировать: Поскольку людям лень проверять подписи.Оба интерфейса имеют одинаковые методы.Я не имею в виду, что getCredentials и getAuthorities одинаковы.Почему, черт возьми, люди делают такое предположение?

Ответы [ 2 ]

5 голосов
/ 01 апреля 2012

UserDetails - это , а не , используемый в целях безопасности, это просто бин "Информация о пользователе".Spring Security использует Authentication экземпляров.Таким образом, Authentication экземпляр обычно будет содержать только информацию, необходимую для входа пользователей (имена пользователей, учетные данные и роли, в основном).UserDetails является более общим и может включать в себя все, что связано с управлением пользователями (например, контактную информацию, информацию об учетной записи, фотографии и т. Д.).

Как правило, у вас будет Authentication экземпляр, поддерживаемый UserDetails экземпляр.

0 голосов
/ 28 марта 2012
getAuthorities 

Используется для безопасности на основе ролей.Это часто полезная функция в SpringSecurity.

getCredentials

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

Если вы уверены, что вам не нужны эти функции, вы можете переопределить эти методы пустыми.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...