我正在尝试使用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');
吗?我拿走了这里生成的一个密钥并使用了它,但也许这不是我应该做的?
我也尝试过使用不同的键,但这并没有太大变化。