首页 > 解决方案 > 登录后如何向 /wp-json/wp/v2/users/me 发出请求?(401 错误)

问题描述

我正在尝试使用jwt-auth在 localhost 上的 React 站点中创建一个登录到我的 Wordpress 安装。

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

但是,当我尝试请求访问我的用户信息时,我收到 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 响应,所以问题出在我的代码上,而不是设置上。

问题:

我也尝试过使用不同的键,但这并没有太大变化。

标签: wordpressreactjswordpress-rest-apijwt-auth

解决方案


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

要么我忘记编辑,要么我的 .htaccess 在某个时候被重置并且我丢失了:

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

我的网站现在工作正常。

本指南对我帮助很大,它比 JWT-auth 的 Git 更清晰。


推荐阅读