我实现了一个完整的堆栈Reaction和Spring Boot应用程序,我使用Spring Security进行身份验证和授权.关于授权有一种奇怪的行为.
每当我通过npm start
重新启动前端应用程序并登录到应用程序时,所有必要的参数,如用户ID、JWT、角色、用户名都被正确设置为本地存储,并且应用程序导航到不需要授权的主页.However,当我点击一个需要授权的菜单时,我得到"需要完全身份验证才能访问此资源"错误.
但是,如果我在登录后通过主页上的window.location.reload()
刷新页面,然后单击菜单,则不会出现错误(如果我首先导航到页面而不是主页,错误发生在刷新之前的很短时间内).
我通过postman 多次try 相同的端点,没有出现任何类似的问题.出于这个原因,似乎在react 方面缺少了一些东西.你有什么 idea 吗?
以下是我通过Axios发送的标题,但我认为没关系:
const config = {
headers: {
// "Access-Control-Allow-Origin": "*",
// "Access-Control-Allow-Credentials": true,
// "Content-Type": "application/json",
Accept: "application/json",
Authorization: `Bearer ${AUTH_TOKEN}`
},
};
100
import axios from "./axios";
const headers = {
Accept: "application/json",
"Content-Type": "application/json",
};
const axiosInstance = axios.create({
headers,
});
export default axiosInstance;
axiosInstance.defaults.headers.common.Authorization = `Bearer ${localStorage.getItem("tokenKey")}`;
export const getWithAuth = (url) => {
const request = axiosInstance.get(url);
return request.then((response) => response.data);
};