2013-12-23 4 views
2

Я пытаюсь сделать несколько вещей в обработчике проверки подлинности и мне нужно получить доступ к нескольким значениям, которые были частью исходных данных запроса, отправляемых в Spring Security. Я отправляю следующую информацию, если пользователь пытается сделать войти вКак получить атрибуты запроса в обработчике проверки подлинности-аутентификации

  1. j_username
  2. j_password
  3. код филиала

Spring безопасности может успешно пройти проверку подлинности пользователя и вызова «authentication-success-handler».

public class WebshopAuthenticationSuccessHandler extends SavedRequestAwareAuthenticationSuccessHandler 
{ 

    public WebshopAuthenticationSuccessHandler() { 

    } 

    @Override 
    public void onAuthenticationSuccess(final HttpServletRequest request, 
      final HttpServletResponse response, final Authentication authentication) 
      throws IOException, ServletException { 

     ServletRequestAttributes attr = (ServletRequestAttributes) RequestContextHolder.currentRequestAttributes(); 
     request.getAttribute("storeCode"); 
     attr.getRequest().getAttribute("storeCode"); 
    } 
} 

Но во всем пути, я не могу получить значение storeCode и его приход в null. Не уверен, что я делаю неправильно. Я предполагаю, что Spring создает новый экземпляр запроса и ответа при вызове onAuthenticationSuccess, но как я могу передать/получить значения, переданные с страницы входа?

+0

Включает ли 'WebshopAuthenticationSuccessHandler' во время POST или в следующем GET? –

+0

@SotiriosDelimanolis: не знаете, что вы спрашиваете? от моей страницы входа, я делаю POST –

ответ

2

Если данные получены из HTTP POST-запроса, вы должны использовать getParameter, а не getAttribute. Атрибуты - это только серверное состояние, не переданное клиентом.

+0

Спасибо за указатель, и с последних нескольких минут я указывал Spring безопасности по этой проблеме, даже не глядя даже на мой код :(. –

Смежные вопросы