Выполнить вход в систему - PullRequest
0 голосов
/ 11 марта 2010

Мне нужно выполнить некоторую обработку только после того, как пользователь успешно вошел в систему. Я думал, что могу сделать метод RESTful и установить его как default-target-url, чтобы при успешном входе в систему он переходил по этому URL-адресу, а затем мог перенаправить на реальный индекс моего веб-приложения.

<form-login login-page='/login.htm' default-target-url='/home.htm' always-use-default-target='true' />

Проблема в том, что эту обработку можно выполнить, вызвав ее URL, чтобы она могла быть выполнена любым пользователем в любое время. Я хочу убедиться, что он выполняется только после входа в систему. Есть ли способ сделать это?

Большое спасибо.

Ответы [ 2 ]

1 голос
/ 12 марта 2010

Я решил это, создав обработчик, который расширяет SavedRequestAwareAuthenticationSuccessHandler, реализует AuthenticationSuccessHandler, и выполнил мою собственную реализацию в методе onAuthenticationSuccess.

Чтобы вызвать этот обработчик после успешного входа в систему, я установил свойство authentication-success-handler-ref в конфигурации XML.

1 голос
/ 12 марта 2010

Не могли бы вы сделать это в фильтре сервлетов?

/**
 * @see javax.servlet.Filter#doFilter(javax.servlet.ServletRequest,
 *      javax.servlet.ServletResponse, javax.servlet.FilterChain)
 */
public void doFilter(ServletRequest request, ServletResponse response,
        FilterChain chain) throws IOException, ServletException
{
    chain.doFilter(request, response);

    // Do post processing here if we have a valid session for the user
}

И в web.xml

<filter>
    <filter-name>PostLoginFilter</filter-name>
    <filter-class>
        com.scoreout.web.servlet.filter.PostLoginFilter
    </filter-class>
</filter>

<filter-mapping>
    <filter-name>PostLoginFilter</filter-name>
    <url-pattern>/login.htm</url-pattern>
</filter-mapping>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...