По первому вопросу:
есть класс org.springframework.security.web.authentication.WebAuthenticationDetails
Содержит только IP-адрес клиента и его сеанса, но
у него есть метод
protected void doPopulateAdditionalInformation(HttpServletRequest request) {}
Полагаю, вы могли бы улучшить это, создав подклассы и добавив URL-адрес запроса. - Но сначала проверьте, является ли запрос запросом из формы входа или «заблокированным» запросом.
Добавлена
Крис Томпсон опубликовал другую часть головоломки , чтобы ответить на ваш вопрос:
Он упомянул, что сохраненный запрос можно получить из сеанса:
//request is a HttpServletRequest object
SavedRequest savedRequest = (SavedRequest)request.getSession().getAttribute(WebAttributes.SAVED_REQUEST);
String url = savedRequest.getRequestURL();
Таким образом, вы можете комбинировать это, вместо того чтобы расширять детали WebAuthenticationDetails, вам просто нужно прочитать уже включенный сеанс.
@ см. Крис Томпсон ответ