Пользовательский UserDetialsService с несколькими параметрами в Spring Security - PullRequest
4 голосов
/ 23 августа 2011

Spring Security имеет UserDetailsService с методом

public UserDetails loadUserByUsername(String username)

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

В моем приложении имя пользователя будетне быть уникальным.Это может быть одинаковым в разных организациях.Это будет уникальным в организации.Поэтому мне нужно найти данные пользователя по имени пользователя и организации.

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

Форма входа будет иметь три параметра: имя пользователя, название организации и пароль.Эта часть аутентификации с тремя параметрами i / p работает правильно.

Но я не могу вызвать мой пользовательский метод.

Пожалуйста, помогите.

1 Ответ

0 голосов
/ 23 августа 2011

Более простой вариант, который я могу себе представить, это объединить организацию с именем пользователя . И добавьте простую функцию БД, которая делает это при вставке для каждого пользователя.

В вашей БД вы можете иметь:

| organisation | username | organisation_username |

|     IBM      |   Jonny  |      IBM_Jonny        |

Итак, вы бы назвали свой метод с чем-то вроде:

myDetailsService.loadUserByUsername("IBM_Jonny");

Или без каких-либо изменений в базе данных:

myDetailsService.loadUserByUsername(user.getCompany() + "_" + user.getUsername());
...