Spring Security: Для чего используется интерфейс UserDetailsManager? И больше! - PullRequest
5 голосов
/ 08 апреля 2009

Мне интересно узнать об интерфейсе UserDetailsManager . Он не упоминается в справочном руководстве, а в JavaDoc он описывается как:

Расширение UserDetailsService , который обеспечивает возможность создавать новых пользователей и обновлять существующие.

При реализации интерфейса UserDetailsManager необходимо реализовать пять собственных методов и один, который он наследует от сервиса UserDetailsService, который он расширяет.

Это следующие методы: createUser, updateUser, deleteUser, changePassword, userExists и унаследованный метод loadUserByUsername.

В платформе Spring Security v2.0.4 есть две конкретные реализации UserDetailsManager: JdbcUserDetailsManager и LdapUserDetailsManager .

И интерфейс, и конкретные реализации реализованы Люком Тейлором.

Кажется, среда Spring Security никогда не использует конкретные реализации.

Мой вывод заключается в том, что интерфейс включен исключительно в качестве удобного интерфейса, который пользователь платформы может или не может использовать. Возможно, кто-то думал, что позже будут существовать более конкретные реализации, которые возьмут на себя часть работы для пользователей платформы?

Я ищу больше информации. Чтобы информация имела ценность, она должна поступать напрямую или косвенно (я полагаю, что это наиболее вероятно) от кого-то, кто разбирается в процессе разработки инфраструктуры. Любой другой может просто догадываться, как я только что сделал выше.

Если это просто удобный интерфейс. Есть ли еще такие интерфейсы и классы, которых нет в справочном руководстве? Мне интересно знать, как это может быть полезно для меня при разработке.

Просматривать все интерфейсы и классы, чтобы увидеть, какие из них фактически используются внутри фреймворка, немного придирчиво, и это может быть также подвержено ошибкам, если задействовано отражение (поэтому выполняются вызовы, которые моя IDE не может выяснить).

1 Ответ

3 голосов
/ 09 апреля 2009

Ваше предположение верно. В соответствии с исходным запросом функции он был добавлен ", поскольку это довольно часто запрашиваемая функция, и ее довольно просто достичь путем расширения существующих интерфейсов и классов. "

Ходили разговоры о создании отдельного проекта для заполнения этого интерфейса, но он еще не закрепился.

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