Могу ли я регенерировать токен CSRF для мутации Graphql в админке SilverStripe?

Я отправляю мутацию из реакции в административной области страниц SilverStripe, но пользователи видят ошибку CSRF с сообщением "Invalid CSRF token". Тем не менее, они по-прежнему кажутся зарегистрированными (если это не так, вместо этого я получаю "Authentication required" в ошибке).

Есть ли способ повторно получить/регенерировать токен CSRF из Javascript? Например, конечная точка, которую вошедший в систему пользователь может использовать для получения нового токена?

Я просмотрел CSRFMiddleware.php, где возникает ошибка, и выполнил общий поиск в ядре для CSRF, но я не вижу связанной конечной точки, которая позволила бы мне это сделать.

ОБНОВЛЕНИЕ: я могу надежно воспроизвести это, загрузив страницу администратора, затем удалив файл cookie сеанса и снова войдя в систему на отдельной вкладке. Таким образом, CSRF в памяти JS становится недействительным.

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

UncleCheese 28.03.2019 02:41

Я думал, что вы можете сделать это по истечении срока действия — так что в случае недопустимой ошибки получить новый токен, а затем повторить мутацию?

user2371784 28.03.2019 03:43

Я думал, что SecurityID можно получить из хранилища избыточности под config, разве это не то, о чем вы спрашиваете?

scrowler 29.03.2019 03:50

Хотя до сих пор в памяти. Если ваша сессия прервется, вы не сможете получить новую извне или обновить браузер.

UncleCheese 29.03.2019 04:10

CMS обычно выполняет запрос "ping" каждые X минут, чтобы поддерживать сеанс. Если вы удаляете файл cookie сеанса, вы фактически «выходите из системы», так как же SilverStripe узнает, что вы вошли в систему как пользователь?

wmk 12.04.2019 09:02
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
5
259
0

Другие вопросы по теме