первый: просто не делай этого.Бьюсь об заклад, все, что вы хотите сделать с этим, нарушит безопасность.Ввод пароля в поле пароля в форме HTML является одним из таких плохих случаев.Хранение пароля в сеансе также не очень хорошая идея.
Чтобы ответить на ваш вопрос: перезапишите UsernamePasswordAuthenticationFilter и используйте свой пользовательский класс в весенней конфигурации.
Скопируйте содержимое попыткиAuthenticationи добавьте все, что вам нужно для сессии.Было бы очень разумно удалить пароль из сеанса после того, как вы сделали то, что вам нужно
request.getSession().removeAttribute(SPRING_SECURITY_LAST_PASSWORD_KEY);
Класс фильтра:
public class MyFilter extends UsernamePasswordAuthenticationFilter{
public static final String SPRING_SECURITY_LAST_PASSWORD_KEY = "SPRING_SECURITY_LAST_PASSWORD";
public Authentication attemptAuthentication(HttpServletRequest request, HttpServletResponse response) throws AuthenticationException {
if (postOnly && !request.getMethod().equals("POST")) {
throw new AuthenticationServiceException("Authentication method not supported: " + request.getMethod());
}
String username = obtainUsername(request);
String password = obtainPassword(request);
if (username == null) {
username = "";
}
if (password == null) {
password = "";
}
username = username.trim();
UsernamePasswordAuthenticationToken authRequest = new UsernamePasswordAuthenticationToken(username, password);
// Place the last username attempted into HttpSession for views
HttpSession session = request.getSession(false);
if (session != null || getAllowSessionCreation()) {
request.getSession().setAttribute(SPRING_SECURITY_LAST_USERNAME_KEY, TextEscapeUtils.escapeEntities(username));
request.getSession().setAttribute(SPRING_SECURITY_LAST_PASSWORD_KEY, TextEscapeUtils.escapeEntities(password));
}
// Allow subclasses to set the "details" property
setDetails(request, authRequest);
return this.getAuthenticationManager().authenticate(authRequest);
}
}