Как узнать, с какого IP произошел успешный вход? - PullRequest
2 голосов
/ 14 сентября 2011

Я использую Spring Security 3. У меня есть следующий метод:

public class CustomUsernamePasswordAuthenticationFilter extends UsernamePasswordAuthenticationFilter {
    @Override
    protected void successfulAuthentication(HttpServletRequest request, HttpServletResponse response, Authentication authResult) throws IOException, ServletException {
        super.successfulAuthentication(request, response, authResult);
        UsernamePasswordAuthenticationToken token = (UsernamePasswordAuthenticationToken) authResult;
        WebAuthenticationDetails details = (WebAuthenticationDetails) token.getDetails();
        String address = details.getRemoteAddress();
        System.out.println("Successful Login from remote address: "+ address);
    }

    @Override
    protected void unsuccessfulAuthentication(HttpServletRequest request, HttpServletResponse response, AuthenticationException failed) throws IOException, ServletException {
        super.unsuccessfulAuthentication(request, response, failed);
        System.out.println("==failed login==");
    }
}

Есть ли у меня грязный код для распаковки адресной переменной? Могу ли я написать это коротко или правильно?

Ответы [ 2 ]

1 голос
/ 14 сентября 2011

Это будет, вероятно, лучше:

String address = request.getRemoteAddr();
1 голос
/ 14 сентября 2011

Что именно вы ищете?Этот «адрес» будет сообщаемым адресом того, кто / кто запросил вашу услугу, хотя он может быть подделан, и прокси-серверы будут сообщать о себе как «удаленный адрес», опционально включая заголовок HTTP, включая оригинальный «удаленный адрес».По соглашению заголовок называется «X-FORWARDED-FOR».Это полностью зависит от прокси и того, кто его настраивал.

...