2016-04-07 2 views
4

У меня проблема с базовой аутентификацией.Не удается аутентифицироваться с помощью базовой проверки подлинности с использованием WP REST API 2.0 плагина

Попытка отправить запрос GET с Postman (хром плагин) с помощью следующей URL: http://_MY_WEBSITE_URL_/wp-json/wp/v2/users/3

Имя пользователя и поле пароля заполнен учетными данными администратора сайта.

Я получаю ошибку:

{ 
    "code": "rest_user_cannot_view", 
    "message": "Sorry, you cannot view this resource.", 
    "data": { 
     "status": 401 
    } 
} 

Я попробовал обычную проверку подлинности с помощью wp_remote_request с другого сайта, и с CURL тоже, но результат тот же каждый раз.

Пользователь с id 3 существует, я проверил его. Если я хочу перечислить всех пользователей, я получаю только тех, у кого есть сообщения.

Я активировал необходимые плагины: WP REST API, JSON Basic Authentication.

Моя версия WordPress: 4.4.2

ответ

2

Наконец-то я понял решение. Мне пришлось добавить несколько новых параметров в файл .htaccess, плагин не сделал этого.

Код:

# BEGIN WP BASIC Auth 
<IfModule mod_rewrite.c> 
RewriteEngine On 
RewriteBase /PluginTest/ 
RewriteCond %{HTTP:Authorization} ^(.*) 
RewriteRule ^(.*) - [E=HTTP_AUTHORIZATION:%1] 
</IfModule> 
# END WP BASIC Auth 
+1

Отлично! Не забудьте использовать SSL, поскольку Basic Auth отправляет фактические данные пользователя для каждого запроса. Взгляните на JWT (JSON Web Tokens) на более длительный срок https://wordpress.org/plugins/jwt-authentication-for-wp-rest-api/ – brianlmerritt

+0

Я использую теперь аутентификацию Oauth1, Basic был для теста только, у меня была та же проблема с Oauth1, поэтому этот htaccess также исправил эту проблему.:) –

+1

Cool - для мобильных приложений я обнаружил, что JWT проще настроить, но Oauth работает. Я просто хотел использовать Oauth 1a или 2 – brianlmerritt

2

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

для просмотра детальной

сор-содержание/плагины/отдых-апи/Библиотека/оконечных/класс-сор-остальные пользователи-controller.php

public function get_item_permissions_check($request) { 

    $id = (int) $request['id']; 
    $user = get_userdata($id); 
    $types = get_post_types(array('public' => true), 'names'); 

    if (empty($id) || empty($user->ID)) { 
     return new WP_Error('rest_user_invalid_id', __('Invalid resource id.'), array('status' => 404)); 
    } 

    if (get_current_user_id() === $id) { 
     return true; 
    } 

    if ('edit' === $request['context'] && ! current_user_can('list_users')) { 
     return new WP_Error('rest_user_cannot_view', __('Sorry, you cannot view this resource with edit context.'), array('status' => rest_authorization_required_code())); 
    } else if (! count_user_posts($id, $types) && ! current_user_can('edit_user', $id) && ! current_user_can('list_users')) { 
     return new WP_Error('rest_user_cannot_view', __('Sorry, you cannot view this resource.'), array('status' => rest_authorization_required_code())); 
    } 

    return true; 
} 
+0

Сообщение об ошибке же, с нормальным вызовом, без аутентификации. Я получаю это сообщение, даже если я не отправляю свои учетные данные, поэтому я думаю, что это может быть проблема с аутентификацией. P.S. Я понял другое. Я установил новый новый wordpress на свой localhost, установил только эти 2 плагина, и он все еще не работает, если я использую «localhost», НО если я использую свой локальный IP-адрес «127.0.0.1», то аутентификация работает. –

+0

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

+0

Моя роль администратора - «admin», поэтому я не могу ее изменить. Как я уже упоминал, все отлично работает с новым wordpress, если я изменяю URL-адрес от ** http: // localhost/wp_test1/wp-json/wp/v2/users/2 ** до ** http://127.0.0.1/wp_test1/wp-json/wp/v2/users/2** аутентификация работает, и я могу удалять сообщения с моим пользователем роли администратора. –

Смежные вопросы