В Spring Security 3.1 я использую аутентификацию на основе форм и хочу добавить дополнительные атрибуты в объект UserDetails - PullRequest
0 голосов
/ 20 февраля 2012

Я новичок в Спрингс и не опытный программист Java.

Я создаю прототип, где использую безопасность Springs. для простоты я использую аутентификацию пользователей на основе форм JSP и у меня есть несколько фиктивных пользователей в моем applicationContext-security.xml

<security:http auto-config='true'>
  <security:intercept-url pattern="/**" access="ROLE_USER" />
</security:http>

<security:authentication-manager>
  <security:authentication-provider>
    <security:user-service>
      <security:user name="foo" password="foo" authorities="ROLE_USER, ROLE_ADMIN" />
      <security:user name="bob" password="bob" authorities="ROLE_USER" />
    </security:user-service>
  </security:authentication-provider>
</security:authentication-manager>

Идея состоит в том, что позже этот метод аутентификации будет заменен аутентификацией OpenId.

Теперь мне нужно, чтобы после аутентификации пользователя, используя аутентифицированное имя пользователя, я хотел бы получить дополнительные сведения о пользователе из таблицы базы данных и поместить его в объект Springs UserDetails, чтобы он был доступен мне постоянно

Что я исследовал до сих пор, так это то, что мне нужно создать мой пользовательский UserDetailsService

мой вопрос: если я использую стандартный метод аутентификации springs, нужно ли мне создавать пользовательский UserDetailsService? Я просто хочу сохранить некоторые дополнительные данные, читая их из базы данных.

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

спасибо

1 Ответ

1 голос
/ 21 февраля 2012

Да. Как правило, вам нужен пользовательский UserDetailsService, который возвращает расширенный объект UserDetails с необходимыми дополнительными свойствами. Вы найдете множество примеров конфигураций, если будете искать SO, например, эта , например.

Строго говоря, вам не нужно использовать UserDetailsService или внедрять UserDetails (вы можете реализовать AuthenticationProvider напрямую), но это самый простой подход к работе и, вероятно, с чего вам следует начать.

...