Регистрация данных агента пользователя при входе в Spring Security - PullRequest
2 голосов
/ 17 ноября 2009

Я использую Spring Security с LDAP для приложения и хочу регистрировать user-agent, когда пользователь входит в систему. Однако я не могу получить доступ к объекту запроса в Populator Populator, поэтому я не могу получить доступ к информации user-agent из есть.

Я также попытался установить шаблон в нашем регистраторе (log4j), чтобы он регистрировал пользовательский агент, вводя% X {user-agent}, но это тоже не сработало.

Все, что я хочу сделать, - это регистрировать информацию о пользовательском агенте, когда пользователь входит в систему. Поэтому, если в среде безопасности Spring есть метод, я могу переопределить, который будет иметь доступ к запросу на объект входа, который был бы идеальным.

OR

Если я смогу получить log4j для записи пользовательского агента при каждой записи в журнал, это тоже подойдет.

1 Ответ

3 голосов
/ 17 ноября 2009

Расширить AuthenticationDetailsSourceImpl :

import javax.servlet.http.HttpServletRequest;
import org.acegisecurity.ui.AuthenticationDetailsSourceImpl;

public class UserAgentAuthenticationDetailsSourceImpl extends  
                               AuthenticationDetailsSourceImpl {

    public Object buildDetails(HttpServletRequest request) {
            String userAgent = request.getHeader("User-Agent");
            return super.buildDetails(request);
    }
}

Установите его в фильтре аутентификации:

<bean id="authenticationProcessingFilter"
      class="org.acegisecurity.ui.webapp.AuthenticationProcessingFilter">
    ...
    <property name="authenticationDetailsSource">
        <bean class="UserAgentAuthenticationDetailsSourceImpl"/>
    </property>
</bean>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...