Настройка безопасности acegi для хранения успешных входов в БД - PullRequest
1 голос
/ 20 июня 2010

Я новичок в Acegi. У меня это работает в простейшей форме. Я должен войти в систему, чтобы получить доступ к защищенным страницам (я следовал их руководству).

Теперь я хочу иметь журнал БД для каждого успешного входа в систему. Есть ли простой способ сделать это? Что-то вроде принудительного выполнения определенного действия (которое я бы создал и записывал информацию в БД) каждый раз, когда происходит успешный вход в систему, или, может быть, какая-то внутренняя функция ACEGI, которая делает это для меня?

В настоящее время я думаю о настройке defaultTargetUrl на страницу перенаправления, которая сохранит текущего пользователя в БД, а затем перенаправит на индекс. Но я не уверен, что это сработает, если кто-то получит доступ к входу в систему, пытаясь получить доступ к другой странице, которая не указана (как после входа в систему acegi, кажется, перенаправляет пользователя на эту страницу, что в любом случае мне и нужно)

Есть идеи по этому поводу? Я действительно ценю их.

Спасибо.

В.

Ответы [ 2 ]

2 голосов
/ 20 июня 2010

Вы можете использовать механизм обработки событий Spring , чтобы получать уведомления о AuthenticationSuccessEvent, опубликованном Spring Security.

1 голос
/ 20 июня 2010

Я бы сделал это через АОП, если это возможно.

Это решение применяется для Spring 3.x и Spring Security 3.x.Spring Security является прямым преемником Acegi, я бы использовал это, если это возможно.Я надеюсь, что это применимо к предыдущей версии.

@AfterReturning("execution(* org.springframework.security.web.authentication.SimpleUrlAuthenticationSuccessHandler.onAuthenticationSuccess(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse, org.springframework.security.core.Authentication)) && args(request, response, authentication)")
public void onAuthenticationSuccess(HttpServletRequest request,
        HttpServletResponse response,
        Authentication authentication) {
    logger.debug(authentication.getPrincipal() + " logged in.");
}

Если вам неудобно работать с AOP, вы, конечно, можете создать оболочку для SimpleUrlAuthenticationSuccessHandler вручную.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...