wordpress - 登录后如何向 /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 响应,所以问题出在我的代码上,而不是设置上。
问题:
- 设置时我做错了
define('JWT_AUTH_SECRET_KEY', 'your-top-secret-key');
吗?我拿走了这里生成的一个密钥并使用了它,但也许这不是我应该做的?
我也尝试过使用不同的键,但这并没有太大变化。
解决方案
我找到了解决问题的方法。
要么我忘记编辑,要么我的 .htaccess 在某个时候被重置并且我丢失了:
RewriteEngine on
RewriteCond %{HTTP:Authorization} ^(.*)
RewriteRule ^(.*) - [E=HTTP_AUTHORIZATION:%1]
我的网站现在工作正常。
本指南对我帮助很大,它比 JWT-auth 的 Git 更清晰。
推荐阅读
- node.js - 为什么我的 Windows 10 计算机上的 Node.js npm 如此之慢
- android - Android 模拟器 (AVD) 在 Ubuntu 20.4 LTS 上启动后立即崩溃
- javascript - 数组 some 在嵌套数组中不起作用
- pandas - 当元素表达式良好时,Pandas Timestamp 列在日期列表中的成员资格失败?
- python - 找出一个数字超过另一个以不同速率增加的数字所需的最少天数
- rest - Openshift - 在同一命名空间中调用另一个 API
- python-3.x - Python:分离字符串的东西
- python - 从一个二维数组中随机选择一对元素,并将它们放在python中的一个句子中
- python - 网页抓取的字符串不能在 for 循环外调用
- python - 输入填充颜色 Python turtle 未执行