Расширение AjaxAwareAuthenticationSuccessHandler, запоминание целевого URL - PullRequest
0 голосов
/ 21 октября 2011

Грааль 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, который защищен.

Спасибо.

1 Ответ

0 голосов
/ 23 октября 2011

Запрос

super.determineTargetUrl(request, response);

должно работать, если вы используете SavedRequestAwareAuthenticationSuccessHandler в качестве суперкласса. Я не уверен, возможно ли для вас переключиться на этот класс в вашем сценарии. Может быть, это может помочь, но я думаю, что вы в полной мере осведомлены об этом: http://omarello.com/2011/09/grails-custom-target-urls-after-login/

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