Размещение кода сразу после авторизации

Добрый день!
Подскажите, пожалуйста, где можно разместить код для выполнения сразу после авторизации?

Скорее всего вам необходимы События аутентификации

Ярослав, я пробовал эти события, но такая конструкция из документации не работает, т.к. авторизация не прошла и accessManager, видимо еще не знает о доступах:

    SpecificOperationAccessContext accessContext =
            new SpecificOperationAccessContext("customer.notify");
    accessManager.applyRegisteredConstraints(accessContext);
    if (accessContext.isPermitted()) {
        // do notify
    }

В LoginScreenSupport есть пример. В onSuccessfulAuthentication вызывается метод checkLoginToUi

        Authentication currentAuthentication = SecurityContextHelper.getAuthentication();

        UiLoginToUiContext loginToUiContext = new UiLoginToUiContext();
        try {
            SecurityContextHelper.setAuthentication(authentication);
            accessManager.applyRegisteredConstraints(loginToUiContext);
        } finally {
            SecurityContextHelper.setAuthentication(currentAuthentication);
        }

Возможно вам это поможет.

1 симпатия

А вообще SecurityContextHelper.setAuthentication(authentication); происходит до

applicationEventPublisher.publishEvent(
                new InteractiveAuthenticationSuccessEvent(authentication, this.getClass()));

Так что я не понимаю почему в подписке на InteractiveAuthenticationSuccessEvent проверка accessManager не срабатывает.

1 симпатия

Выбрал самое простое решение: разместил код в обработчике события MainScreen.onAfterShow
В этом месте доступны все политики ролей вместе с вложенными дочерними ролями.