2013-08-28 1 views
2

Есть ли способ передать параметры URL-адреса поставщику проверки подлинности в Spring Security 3?Параметры безопасности доступа Spring Security к поставщику аутентификации

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

У меня есть собственный класс, расширяющий класс DaoAuthenticationProvider. Моя логика аутентификации находится в методе аутентификации этого класса.

Я надеюсь, что есть способ передать эти данные в метод аутентификации.

ответ

5

Вы можете вводить HttpServletRequest объект вашего класса провайдера аутентификации:

private @Autowired HttpServletRequest request; 

Теперь, вы должны быть в состоянии получить доступ к параметрам запроса с API-интерфейсов, таких как request.getParameterValues(paramName)

+0

Другой вариант, вероятно, является весенним способом сделать это, но это было так просто. – Nixx

+1

Почему это выбранный ответ? HttpServletRequest недоступен в AuthenticationProvider. Попытка получить доступ к ней приведет к ошибке «Без запроса с привязкой к потоку». – JackB

+0

Dunno проблема, с которой вы столкнулись. Это сработало для меня. – Nixx

3

Вам необходимо переопределить UsernamePasswordAuthenticationFilter.setDetails() и проход дополнительную информацию к вашему производителю аутентификации через details свойство UsernamePasswordAuthenticationToken.

+1

Другим способом, который я бы рекомендовал, является введение пользовательского свойства authenticationDetailsSource в фильтр входа по умолчанию. – Ritesh