Spring Security @Preauthorize и @Async

У меня есть методы проверки @PreAuthorize("hasRole('ADMIN')"), когда я звоню из пользовательского интерфейса (это займет от 2 до 3 часов, пока срок действия сеанса истекает). Я получаю SecurityContext как null.

Пробовал с MODE_INHERITABLETHREADLOCAL, но все равно получаю ту же ошибку.

Также я попробовал следующий код:

public class CustomThreadPoolTaskExecutor extends ThreadPoolTaskExecutor{
    @Override
    public void execute(final Runnable r) {
        final Authentication a = SecurityContextHolder.getContext().getAuthentication();

        super.execute(new Runnable() {
            public void run() {
                try {
                    SecurityContext ctx = SecurityContextHolder.createEmptyContext();
                    ctx.setAuthentication(a);
                    SecurityContextHolder.setContext(ctx);
                    r.run();
                } finally {
                    SecurityContextHolder.clearContext();
                }
            }
        });
    }
}   

но я все еще получаю ту же ошибку:

org.springframework.security.authentication.AuthenticationCredentialsNotFoundException: объект Authentication не найден в SecurityContext


person Dileep    schedule 11.04.2017    source источник
comment
Вы пробовали org.springframework.security.task.DelegatingSecurityContextAsyncTaskExecutor?   -  person dur    schedule 11.04.2017
comment
Да, пытался с DelegatingSecurityContextAsyncTaskExecutor получить ту же ошибку.   -  person Dileep    schedule 12.04.2017
comment
Пробовал код, указанный в ссылке stackoverflow.com/questions/37214386/   -  person Dileep    schedule 12.04.2017