这似乎是重复的,但事实并非如此。我已经学到了很多其他问题/答案。
在这种情况下,我启用了Spring Boot Security,当用户登录时会生成JWT令牌-运行良好。
返回访问令牌后,我需要致电受保护的端点以从该用户那里获取一些信息。
在前端侧,我将ReactJS与Axios结合使用,除非我尝试通过在标头的Authorization
属性中传递令牌的受保护端点,否则每个调用都可以正常工作。
奇怪的是,在使用Postman进行测试时,它运行得很好: 1)用电子邮件和密码登录 2)获取返回的令牌并调用任何受保护的端点
Postman与我所做的与邮件头上的Authorization
永不发送的区别是什么?
当令牌存在于本地存储中(并且确实存在)时,我正在使用拦截器将令牌注入请求中:
export const api = axios.create({
baseURL: ROOT_API
});
api.interceptors.request.use(async config => {
config.headers["Accept"] = "application/json; charset=utf-8";
config.headers["Content-Type"] = "application/json; charset=utf-8";
config.headers["If-Modified-Since"] = "Mon, 26 Jul 1997 05:00:00 GMT";
config.headers["Cache-Control"] = "no-cache";
const token = await getToken();
if (token) {
config.headers.Authorization = `Bearer ${token}`;
}
console.log("config => ", config);
return config;
});
但是我每次调用都会得到401状态代码,因为令牌当然永远不会进入服务器端的API。
在图片上可以看到应该发送的标题。但是当我在服务器端检查时,它总是为空。
在此方面,我将不胜感激。