使用Axios和带有Spring Boot Security的后端,授权令牌永远不会进入ReactJS请求标头

时间:2019-09-24 14:54:18

标签: reactjs spring-boot jwt

这似乎是重复的,但事实并非如此。我已经学到了很多其他问题/答案。

在这种情况下,我启用了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。

enter image description here

在图片上可以看到应该发送的标题。但是当我在服务器端检查时,它总是为空。

在此方面,我将不胜感激。

0 个答案:

没有答案