Здравствуйте!
Моё приложение использует Cuba Platform версии 6.10.9 и REST API для взаимодействия с клиентом. Некоторые его функции связаны с языком локализации, который используется клиентом. Для того, что бы определить язык, при получении access токена устанавливается заголовок Accept-Language (например, со значением ru). После этого в обработчиках запросов указанный язык можно получить, вызвав метод
UserSessionSource.getLocale().getLanguage()
И в этом случае метод возвращает корректное значение, указанное клиентом при получении токена.
Далее, после истечения времени жизни access токена (или просто для обновления), делается запрос на получение нового с использованием refresh токена. При этом заголовок Accept-Language так же указывается. Но, после этого метод
UserSessionSource.getLocale().getLanguage()
возвращает уже не указанный клиентом язык, а язык системы по умолчанию.
Я создал demo проект для демонстрации проблемы. Он доступен в репозитории https://github.com/ElusiveAvenger/cp-refresh-token-Accept-Language-ignore
В проект добавлен всего один RestController для демонстрации (DemoController) с единственным методом, который возвращает язык сессии. В readme.md в корне репозитория описан подробный сценарий повторения проблемы.
Ровно тоже самое происходит при использовании метода
UserSessionSource.getUserSession().getLocale().getLanguage()
Добавление заголовка Accept-Language с нужным значением языка клиента в запрос, обработчику которого оно необходимо, так же не меняет результат.
Подскажите, пожалуйста, ожидаемо ли такое поведение системы? Если да, то что мне нужно сделать, что бы получить необходимую мне информацию о языке клиента? Если поведение не является ожидаемым, то как в указанной версии платформы я могу обойти описанную проблему (если это вообще возможно)?