Spring Security/Технический обзор Spring Security: различия между версиями

Содержимое удалено Содержимое добавлено
→‎Сервис UserDetails: исправлена неправильная формулировка
Строка 34:
 
== Сервис UserDetails ==
Это еще один пункт на который стоит обратит внимание в приведенном выше фрагменте кода, в котором мы можем получить пользователя из объекта <code>Authentication</code>. "Пользователь " это просто <code>Object</code>. В большинстве случаев этоон может быть приведен к объекту <code>UserDetails</code>. <code>UserDetails</code> является одним из центральных интерфейсов Spring Security. Он представляет собой принципала, но в расширенном виде и с учетом специфики приложения. Думайте о <code>UserDetails</code> как об адаптере между вашей собственной БД пользователей и тем что требуется Spring Security внутри <code>SecurityContextHolder</code>. Будучи представлением чего-то из вашей БД пользователей, <code>UserDetails</code> довольно часто приводится к исходному объекту Вашего приложения, для того, чтобы вызвать бизнес-методы (такие как, <code>getEmail()</code>, <code>getEmployeeNumber()</code> и т. п.).
 
Возможно вы удивлены, когда я предоставил <code>UserDetails</code> объект? Как я это сделал? Я думаю, вы сказали, это было сделано декларативным способом и мне не потребовалось писать никакого Java кода — в этом дело? Короткий ответ заключается в том, что существует специальный интерфейс, называемый <code>UserDetailsService</code>. Единственный метод этого интерфейса принимает имя пользователя в виде String и возвращает <code>UserDetails</code>: