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

Posted

技术标签:

【中文标题】登录后如何向 /wp-json/wp/v2/users/me 发出请求? (401 错误)【英文标题】:How do I make requests to /wp-json/wp/v2/users/me after logging in? (401 error) 【发布时间】:2019-09-19 14:18:21 【问题描述】:

我正在尝试使用 jwt-auth 在本地主机上的 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();
              
            );
        

就像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】:

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

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

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

我的网站现在运行良好。

This guide 帮了我很多,它比 Git for JWT-auth 清晰得多。

【讨论】:

以上是关于登录后如何向 /wp-json/wp/v2/users/me 发出请求? (401 错误)的主要内容,如果未能解决你的问题,请参考以下文章

登录成功后向片段或页面传递数据

登录后如何正确注销 Java EE 6 Web 应用程序

我们可以在登录后向特定用户发送桌面推送通知吗?

php网站验证登录后怎么跳向用户管理页面

OAuth授权后如何向客户端发送jwt令牌?

swift 3登录后如何返回主页或以前的视图控制器