Intereting Posts
Новое сообщение из базы данных Способ отображения медиа-библиотеки в интерфейсе Как загрузить несколько изображений с помощью WP_Customize_Media_Control Можно ли проверить бета-версию WordPress через github? Добавление «& nbsp;» перед последним словом в нескольких определенных областях с плагином Добавить тег структуры в permalink? Остановить wordpress от создания пустых / нулевых записей Будет ли выходить из очереди в дочерней теме файл functions.php, чтобы предотвратить загрузку Google Fonts? Исключение front_page из условия страницы Как правильно отправлять много запросов mysql через php и что происходит с запросами ajax после их отправки? О файле csv импорта Как запустить несколько операторов в одном запросе? Шаблоны страниц из плагина не работают после обновления WP до 4.7 или верхней версии Как я могу исключить сообщения по значению настраиваемого поля? передача '&' в обратной функции add_filter

WP REST API: проверьте, зарегистрирован ли пользователь

Идея состоит в том, чтобы показать или скрыть некоторые разделы сайта в теме, которая извлекает все данные из REST API, используя AngularJS.

Я думал, что эта проверка поможет мне (nonce передается как заголовок, как это было предложено в документах):

wp_localize_script('angularjs', 'params', array( 'nonce' => wp_create_nonce('wp_rest'), 'nonce_verify' => wp_verify_nonce($_REQUEST['X-WP-Nonce'], 'wp_rest') )); 

Параметр nonce работает, и я могу передать его в виде заголовка запроса через AngularJS, успешно выполнив вход в систему. Но nonce_verify не ожидал.

Итак, вопрос: есть ли способ проверить, зарегистрирован ли пользователь при использовании проверки файлов cookie? Спасибо.

EDIT: Я локализовал значение nonce, потому что мне нужно было получить его в этом фрагменте кода angularJS. Вот где происходит аут:

 $httpProvider.interceptors.push(function () { return { 'request' : function (config) { config.headers = config.headers || {}; config.headers['X-WP-Nonce'] = params.nonce; return config; } } }); 

Solutions Collecting From Web of "WP REST API: проверьте, зарегистрирован ли пользователь"

Вы не должны передавать свой nonce на свой JavaScript, чтобы проверить его, так как скрипты на стороне клиента можно легко манипулировать. Вместо этого вы должны получить nonce из своего front-end контента, а затем передать его на сервер, чтобы проверить его.

После проверки вы должны решить вывести контент по серверу , а не по вашему файлу JavaScript .

Что-то вроде этого:

 if ( is_user_logged_in() ) { if ( wp_verify_nonce($_REQUEST['X-WP-Nonce'], 'wp_rest') { // Nonce is correct! } else { // Don't send the data, it's a trap! } } 

В качестве дополнительной заметки REST API предлагает собственный метод для получения переданных запросов. Таким образом, вы можете получить его таким образом в своей функции обратного вызова:

 function foobar( \WP_REST_Request $request ) { $nonce = $request['X-WP-Nonce']; }