登录后如何向 /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 错误)的主要内容,如果未能解决你的问题,请参考以下文章