登录后如何向/ wp-json / wp / v2 / users / me发出请求? (401错误)

时间:2019-04-30 21:48:15

标签: wordpress reactjs wordpress-rest-api jwt-auth

我正在尝试使用jwt-auth创建登录名,以登录本地主机上React站点中的Wordpress。

登录本身可以正常工作,我的React Site可以识别用户名和密码正确的时间,甚至返回有效的令牌。

但是,当我尝试提出访问我的用户信息的请求时,出现401错误。

在这一点上,我已经以任何可以想到的方式在Google上进行了搜索。我什至不知道该怎么做,因为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();
              }
            });
        }

就像解释的here一样。

但是我收到的只是一个401错误。

如果我尝试运行:

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

我得到了包含用户信息的正确JSON响应,因此问题出在我的代码上,而不是设置上。

问题:

  • 设置define('JWT_AUTH_SECRET_KEY', 'your-top-secret-key');时我做错什么了吗?我拿了生成的here钥匙之一并使用了它,但是也许那不是我应该做的?

我也尝试使用不同的键,但是并没有太大改变。

1 个答案:

答案 0 :(得分:0)

我找到了解决问题的方法。

要么我忘记了编辑,要么.htaccess在某个时候重置了,而我却丢失了:

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

我的网站现在可以正常工作了。

This guide对我有很大帮助,它比用于JWT-auth的Git更清晰。