Как сделать запросы к / wp-json / wp / v2 / users / me после входа в систему?(Ошибка 401) - PullRequest
0 голосов
/ 01 мая 2019

Я пытаюсь создать логин с помощью jwt-auth для моей установки Wordpress на моем сайте React на localhost.

Сам логин работает нормально, мой React Site может распознавать, когда имя пользователя и пароль верны, и даже возвращает действительный токен.

Однако, когда я пытаюсь сделать запрос на доступ к моей информации о пользователе, я получаю ошибку 401.

На данный момент я прибегнул к этому любому, о чем я могу думать. Я даже не знаю, что я могу делать неправильно, потому что wp-api документы говорят мне делать именно то, что я делаю.

Вот мой скрипт входа в систему:

    let message = '';
    this.setState({ message });
    const { username, password } = this.state;
    console.log("trying to log in " + username);
    axios
      .post(`${Config.apiUrl}/jwt-auth/v1/token`, {
        username,
        password,
      })
      .then(res => {
        const { data } = res;
        localStorage.setItem(Config.AUTH_TOKEN, data.token);
        localStorage.setItem(Config.USERNAME, data.user_nicename);
        Router.push('/');
      })
      .catch(() => {
        message =
          ' -  Sorry, that username and password combination is not valid.';
        this.setState({ message });
      });

Как только я получаю токен, я запрашиваю информацию о пользователе следующим образом:

        const token = localStorage.getItem(Config.AUTH_TOKEN);
        console.log(token);
        if (token) {
          wp.setHeaders('Authorization', `Bearer ${token}`);
          wp.users()
            .me()
            .then(data => {
              const { id } = data;
              this.setState({ id });
              console.log(id);
            })
            .catch(err => {
              if (err.data.status === 403) {
                tokenExpired();
              }
            });
        }

Точно так же, как объяснено здесь .

Но все, что я получаю, - это ошибка 401.

Если я попытаюсь запустить:

curl --user user:password creativiii.com/praisethemachine/wp-json/wp/v2/users/me

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

Вопрос:

  • Что-то не так сделал при настройке define('JWT_AUTH_SECRET_KEY', 'your-top-secret-key');? Я взял один из ключей, сгенерированных здесь , и использовал его, но, возможно, это было не то, что я должен был сделать?

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

1 Ответ

0 голосов
/ 01 мая 2019

Я нашел решение проблемы.

Либо я забыл отредактировать, либо в какой-то момент мой .htaccess получил сброс, и мне не хватало:

RewriteEngine on
RewriteCond %{HTTP:Authorization} ^(.*)
RewriteRule ^(.*) - [E=HTTP_AUTHORIZATION:%1]

Мой сайт сейчас работаетотлично.

Это руководство мне очень помогло, оно намного понятнее, чем Git для JWT-auth.

...