Я отправляю мутацию из реакции в административной области страниц SilverStripe, но пользователи видят ошибку CSRF с сообщением "Invalid CSRF token". Тем не менее, они по-прежнему кажутся зарегистрированными (если это не так, вместо этого я получаю "Authentication required" в ошибке).
Есть ли способ повторно получить/регенерировать токен CSRF из Javascript? Например, конечная точка, которую вошедший в систему пользователь может использовать для получения нового токена?
Я просмотрел CSRFMiddleware.php, где возникает ошибка, и выполнил общий поиск в ядре для CSRF, но я не вижу связанной конечной точки, которая позволила бы мне это сделать.
ОБНОВЛЕНИЕ: я могу надежно воспроизвести это, загрузив страницу администратора, затем удалив файл cookie сеанса и снова войдя в систему на отдельной вкладке. Таким образом, CSRF в памяти JS становится недействительным.
Я думал, что вы можете сделать это по истечении срока действия — так что в случае недопустимой ошибки получить новый токен, а затем повторить мутацию?
Я думал, что SecurityID можно получить из хранилища избыточности под config, разве это не то, о чем вы спрашиваете?
Хотя до сих пор в памяти. Если ваша сессия прервется, вы не сможете получить новую извне или обновить браузер.
CMS обычно выполняет запрос "ping" каждые X минут, чтобы поддерживать сеанс. Если вы удаляете файл cookie сеанса, вы фактически «выходите из системы», так как же SilverStripe узнает, что вы вошли в систему как пользователь?



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Интересная проблема. Я думаю, что модуль GraphQL, безусловно, должен предлагать запрос
securityIDиз коробки, поскольку мы уже предлагаем защиту CSRF по умолчанию. Возникает вопрос, как предотвратить устаревание этого токена в приложении. С формами это просто, потому что токен отображается во время загрузки, но в контексте SPA вы получаете только одну загрузку и одну инъекцию в память JS. Просто подумайте вслух, это должно быть какое-то событие опроса, но удаление сеанса не обязательно вызовет обновление.