Как вручную установить аутентифицированного пользователя в Spring Security / SpringMVC

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

Обычная страница входа в систему, проходящая через перехватчик безопасности Spring, работает нормально.

В контроллере формы новой учетной записи я создаю UsernamePasswordAuthenticationToken и вручную устанавливаю его в SecurityContext:

SecurityContextHolder.getContext().setAuthentication(authentication);

На этой же странице я позже проверьте, что пользователь вошел в систему с:

SecurityContextHolder.getContext().getAuthentication().getAuthorities();

Это возвращает полномочия, которые я установил ранее при аутентификации. Все хорошо.

Но когда этот же код вызывается на следующей странице, которую я загружаю, токен аутентификации будет просто UserAnonymous.

I ' непонятно, почему он не сохранил аутентификацию, которую я установил в предыдущем запросе. Есть мысли?

  • Может быть, это связано с неправильной настройкой идентификатора сеанса?
  • Есть ли что-то, что может как-то перезаписать мою аутентификацию?
  • Может, мне просто нужен еще один шаг, чтобы сохранить аутентификацию?
  • ] Или мне нужно что-то сделать, чтобы как-то объявить аутентификацию для всего сеанса, а не для одного запроса?

Просто ищу некоторые мысли, которые могут помочь мне увидеть, что здесь происходит.

102
задан David Parks 12 January 2011 в 02:44
поделиться