Не, там зависит от того, какой способ аутентификации, контракт определяет что Authentication.getPrincipal() возвращает Object. В моём случае это либо Jwt либо OidcUser (в зависимости от того, как проходит аутентификация, с помощью AccessToken’а переданного с запросом или с помощью переадресации пользователя к AuthorizationServer)
Читать полностью…Вообще эта аннотация инжектит по сути имплементацию UserDetails, чтобы руками так не делать. У тебя она кастомная?
Читать полностью…Не обязательно, там довольно широкая вариативность, обращаться может ведь как пользователь, так и какое-то сторонние клиентское приложение и для них по разному проходит аутентификация
Читать полностью…Аннотация просто говорит спрингу примерно следующее: «Эй, смотри, такого объекта у тебя в контексте нет, но нужно взять объект класса Authentication и вызвать на нет GetPrincipal и передать результат это в качестве аргумента». В моём же случае getPrincipal я вызываю сам внутри сервисного класса, но нужен мне не только Principal, а весь объект Authentication, потому что Principal может представлять собой совершенно разные классы и затратно каждый раз возиться с ним, лишний раз кастить и пытаться достать GrantedAuthority когда все и так уже есть в объекте Authentication
Читать полностью…Потому что мне нужно получить не Principal, а саму Authentication (Principal это часть Authentication, как и GrantedAuthority, например в случае JwtAuthenticationToken Principal это объект Jwt), а это означает что нужно просто извлечь Authentication из контекста и нет необходимости вызывать ещё и метод GetPrincipal
Читать полностью…Посмотрю, спасибо. Впрочем, в данном случае это не решит проблему, потому что нужный компонент есть в контексте безопасности, если достать его через SecurityContextHolder внутри контроллера. Он именно не передаётся в качестве аргумента при вызове метода контроллера с помощью MockMvc, а здесь все упирается в то, что я не совсем понимаю как MockMvc вызывает метод контроллера и как взаимодействует с контекстом приложения (по идее должен извлекать нужный компонент из контекста и передавать в качестве аргумента), но другой вопрос в том, что возможно MockMvc не взаимодействует с SecurityContext, а отвечает за это какой-то из фильтров или других компонентов SpringSecurity и без него просто некому достать нужный компонент. А вот детальной информации по механизмам внутренней работы SpringSecurity и MockMvc ни в документации ни в книгах особо нет. Контроллер делаю руками просто потому, что пока не разобрался в том, как правильно построить контекст для тестов
Читать полностью…Нет, я с этим поведением сталкивался с обычным редисом на тачке поднятом и небольшим приложением. Это кажись дефолтное поведение, что он не умеет переподключаться после обрыва такого
Читать полностью…если вопрос «можно ли сразу из http в памяти сделать архив?» то формально ответ «да», но на практике если файлов много то все равно потребуется промежуточное хранилище для того чтобы все файлы накопить (tmp или базейка)
можно кще посмотреть в http, обычно по нему летит уже зазипованное, может вам на лету ок это перехватывать. Но это хак
ну и традиционное:
какую задачу решаем? https://en.m.wikipedia.org/wiki/XY_problem