Intereting Posts
у меня проблема при загрузке изображений в WordPress программно, проблема занимает слишком много времени и ломается ошибка времени exec WordPress пользовательский столбец Моя выдержка не работает Переход на промежуточный сервер, страницы с другого сайта, загружаемого в $ wpdb выбрать все мета для каждого сообщения Как динамически заполнять wp_nav_menu из пользовательской таксономии? Как передать идентификатор гиперссылки на обработчик ajax? RESOLVE – тип пользовательских сообщений с числовой разбивкой по страницам как положить тег «h1» в css как класс и вызвать его в любом месте файлов сайта Название раздела для меню в настройке темы Достаточно ли только сделать многоузловое отображение домена с плагином в WordPress 4.1? Виджет для встраивания видео в YouTube Использование Bootstrap nav на странице Групповые сообщения по настраиваемому метазначению: дата переписать правила и зафиксировать

Безопасный REST с помощью unce работает только тогда, когда не регистрируется

Я расширяю Apache WordPress, регистрируя маршрут и делаю вид, что делаю это безопасным.

Конечная точка должна быть доступна только зарегистрированным пользователям, но я не нашел для нее что-то конкретное в REST api. Итак, я должен использовать nonce.

Я регистрирую javascript с переменной nonce, созданной wp_create_nonce('abc1234') , и отправляю ее через ajax следующим образом:

 $.ajax({ url: resturi, data: { 'nonce': nonce }, success: function(result) { alert(result); }, error: function() { alert('Request level error'); } }); 

И в пути я поймаю nonce следующим образом:

 public function helloworld(\WP_REST_Request $request) { if (!wp_verify_nonce($request["nonce"], "abc1234")) { return 'I got problems!'; } return 'Yes! You did it!'; } 

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

Я мог бы просто удалить условие отрицания из метода helloworld, но все будет еще более странно, чем это уже получилось!

Я задаюсь вопросом, что я защищаю свой отдых не так. Итак, каков был бы правильный способ сделать это?

И да, я попытался отправить nonce с кодом ajax:

  beforeSend: function ( xhr ) { xhr.setRequestHeader( 'X-WP-Nonce', nonce ); }, 

но получил 403, без подсказки почему.