Грааль 1.3.7
Spring-Security-Core 1.1.2
Я реализовал пользовательский класс, который расширяет AjaxAwareAuthenticationSuccessHandler, чтобы после входа в систему можно было выполнять определенные роли для определенных URL-адресов, что прекрасно работает. Однако, если сеанс истекает, мне нужно иметь возможность перевести пользователя на запрошенный URL-адрес по истечении сеанса, переопределяя URL-адрес на основе ролей.
Вот упрощенная версия моего кода
class MyAuthSuccessHandler extends AjaxAwareAuthenticationSuccessHandler {
@Override
public void onAuthenticationSuccess(final HttpServletRequest request, final HttpServletResponse response,
final Authentication authentication) throws ServletException, IOException {
def goAdmin = false
authentication.authorities.each { ga ->
if (ga.authority.equals('ROLE_ADMIN')) {
goAdmin = true
}
}
if (goAdmin) {
response.sendRedirect(request.contextPath + '/admin/index')
}else{
super.onAuthenticationSuccess(request, response, authentication)
}
}
}
Я попытался добавить вызов defineTargetUrl (запрос, ответ), но он всегда возвращает '/', даже если я запрашивал ресурс, такой как / admin / foo, который защищен.
Спасибо.